![]() |
Freigabe von Speicher, der in DLL allkokiert wurde
Hallo,
ich habe folgende Problematik: Ich besitze eine Prozedur die in einer DLL steckt:
Delphi-Quellcode:
Diese Prozedur erwartet ein dynamisches Array.
procedure Scan (ZeigerAufArray:Pointer; ZeigerAufCounter:Pointer);
Dieses Array wird in der Prozedur (DLL) auf eine benötigte Größe gesetzt und der Speicher wird allokiert:
Delphi-Quellcode:
Dann wird die Länge des Array im ZeigerAufCounter zurückgegeben,
SetLength(ZeigerAufArray^, 5);
und der Aufrufer bekommt ein gefülltes Array zurück. Jetzt meine Frage, wie sollte dann der Speicher wieder freigegeben werden? Viele Grüße DM |
Re: Freigabe von Speicher, der in DLL allkokiert wurde
Mit SetLength auf 0, oder was meinst Du?
|
Re: Freigabe von Speicher, der in DLL allkokiert wurde
Keine Zeiger auf dyn. Arrays übergeben.
Stattdessen ein TBlub = array of Integer; procedure Scan(Ar: Tblub; ..) dann kannst du innerhalb der Scan Funktion das array vergroßern bzw. verkleiner. |
Re: Freigabe von Speicher, der in DLL allkokiert wurde
Ein dynamisches Array ist doch bereits ein Zeiger auf das erste Element, oder habe ich das immer falsch verstanden?
|
Re: Freigabe von Speicher, der in DLL allkokiert wurde
Zitat:
TInfo = record DeviceID: integer; communicatioResult:Integer; end; type TDeviceInfo= array of TInfo; Aber im Prinzip ist das ja nichts anderes. Es wird der Zeiger übergeben... Zitat:
|
Re: Freigabe von Speicher, der in DLL allkokiert wurde
Siehe den Post hier warum ein Pointer != dynarray ist
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz