Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: Fehler nach freigeben von DLL

  Alt 30. Apr 2007, 09:19
Hallo,

Ein ReAlloc erzeugt unter Umständen einen neuen Pointer
und der alte wird nicht mehr verwendet.
Vielleicht solltest du bei der Übergabe ein Pointer auf einen PChar
nehmen statt das PChar selber.

Der Zusammenhang:
Tja, Dlls.
Mache mal zum Test ein SetLength vor DLL-Aufruf
mit einem grösseren Werte also in der DLL gemacht wird.
Dann verringert das DLL-SetLength den Speicher nur,
ReAlloc sollte nicht aufgerufen werden.


Zu "grosser Wert".
In der DLL muss eh Speicher angefordert werden,
wei viel hängt wovon ab ?
Das man einer Funktion ein PChar + dessen Grösse übergeben muss
ist doch nichts angewöhnliches.
Wenn ich z.B. eine API-Funktion für Pfade benutzen will,
nehme ich MAX_PATH als Grösse des PChar,
obwohl ich vielleicht kleiner Pfade zurückbekomme.


Heiko
PS:
MS (jaja, genau die) hatten mal in einer alten Word (2.0 für Dos)
auch so nen ReAlloc-Fehler drin, der "ab- und zu" zum Absturz
des Programms geführt hatte.
Das stand mal in nem C-Buch bei ReAlloc drin.
Heiko
  Mit Zitat antworten Zitat