Ich habe hier eine
Unit mit einer Klasse, von TObject abgeleitet, nichts Besonderes mit einer Anzahl von Feldern und Prozeduren/Funktionen, die ungefähr 10 Klassen der gleichen
Unit beherbergt. Diese
Unit hat
Delphi-Quellcode:
procedure Clear;
procedure Free;
constructor Create;
Diese
Unit habe ich nun in mein Programm eingebunden. Alles lief ohne Probleme, bis es auf einmal wüste Meldungen von FastMM hagelte, Hunderte von Speicherlecks. Ich habe mir einen Wolf gesucht, aber die Objektinstanz wurde immer ordnungsgemäß freigegeben. Endlich kam ich auf die Idee, einen Haltepunkt bei
Free
zu setzen.
Und da kam Folgendes raus: Wenn ich
Objekt.Free
geschrieben hatte, wurde die Prozedure auch durchlaufen. Aber
nicht bei
FreeAndNil(Objekt)
. Als ich alles zu
Free
geändert hatte, gab FastMM sofort Ruhe.
Ist sowas bekannt? Ich habe meiner Erinnerung nach nichts an den Projektoptionen geändert, und in dem sonstigen Code kommt häufig
FreeAndNil
vor. Was sagen die Experten?
Vielleicht sollte ich noch sagen, dass mir meine Rio 10.3.3-Installation sowieso etwas merkwürdig vorkommt. Die roten Fehler-Krickel fehlen; Haltepunkte werden manchmal ignoriert, bis ich neu erzeuge; und bei einem Haltepunkt ist der Debugger nicht selten schon deutlich weiter. STRG + # funktioniert laufend nicht (-> Rechtsklick hilft). Vermutlich sagen jetzt alle, öh, neu installieren, aber kann das mit FreeAndNil so einfach sein?