Von mir selbst bzw. im Code erzeugte Objekte werden bei mir immer zuverlässig freigegeben. Hab das eben mal mit ReportMemoryLeaksOnShutdown := True in einigen meiner Anwendungen getestet: Kein einziges Speicherleck ... caFree verwende ich praktisch nicht, da ich OnClose bislang ebenfalls nicht einsetzte. Freigaben können also weiterhin in OnCloseQuery der Hauptform stattfinden, da diese Methode ohne Ausnahme immer nach dem Close aufgerufen wird:
Du brauchst da nichmal caFree.
Sobald das Ding geschlossen wird (Close oder Free), wird die Messageloop verlassen und dann alle anderen Fenster (welche via CreateForm erstellt wurden) geschlossen.
In wie weit dabei alles Andere ordentlich freigegeben wird, hängt davon ab, ob es es irgendwo registriert wurde, was das Freigeben übernimmt, bzw. ob es entsprechende Freigaberoutingen an der richtigen Stelle gibt.
ReportMemoryLeaksOnShutdown
Wie das läuft, wenn ich einen Prozeß via TaskManager abschieße, weiß ich jetzt aber echt nicht. Aber wir kommen wohl schon eine Weile vom Thema ab ...