Zitat:
Muss ich die TCallInstance freigeben, ich dachte bei einer lokal erstellen Variable/Klasse passiert das nach Beendigung automatisch. Gilt das nicht für lokale Klassen?
Grundsatz: Alles was du erstellst, mußt du freigeben. Objektlisten/ObjektDictionarys erleichtern dir das mit dem Freigeben.
Objektlisten: Liste := TObjectList<TBlubb>.Create(True); // True heißt, die Liste gibt die Objekte frei
ObjektDictionary: Dictionary := TObjectDictionary<string, TBlubb>.Create([doOwnsValues]); // doOwnsValues heißt, das Dictionary gibt die Objekte frei
Hmm...eigentlich hättest du ohne doOwnsValues nur MemoryLeaks haben müssen. Das mit dem Clear vor dem Free muß ich mal ausprobieren...
MemoryLeaks anzeigen:
...in die
DPR aufnehmen vor
Application.Initialize:
ReportMemoryLeaksOnShutdown := True;