Delphi-Quellcode:
{ aber hier ist eine Finalisierung für MyPtr^ notwendig, andernfalls bleibt der string bestehen }
// Finalize(MyPtr^);
Holy shit.
Ich habe nie New+Dispose benutzt. Und ich dachte immer longstrings kümmern sich selbst um sich und da muss ich mir keine sorgen machen.
Also für Records mit fester größe immer new und dispose nutzen....hm
und New+Dispose wie eine lokale managed Variable, bzw. wie Create und Destroy zum Objekt-Feld.
Dispose darf man dann aber auch nur einmal aufrufen?
ich habe im Beispiel nur alle 3 Varianten aufgeführt:
Code:
Setlength(AArray,0);
Finalize(AArray);
AArray:=nil;
um 'sicher' zu gehen, normalerweise nutze ich nur Setlength(AArray,0);
Die Frage ist aber immer noch, warum es mir von FastMM5 als Leak angezeigt wird.
Vielleicht brauchst du so eine Demo mit Log des Refcount wie Uwe Raabe sie für die verschiedenen New+Dispose, GetMem+Freemem und Declare + :=nil gemacht hat
Nur eben für diesen dreifach free.