Delphi-Quellcode:
{...}
destructor Destroy; virtual;
Ein Teil des Custom Objects
die anderen descructor`s mit override überschrieben
wenn ich destroy aufrufe kein Problem, mit free
wird destroy nicht aufgerufen
Was könnte ich übersehen haben
Jede Klasse hat eine Liste der virtuellen Methoden.
Für abgeleitete Klassen wird eine Kopie dieser Tabelle erstellt und Einträge überschrieben (override) oder neue hinzufügen (virtual).
Mit "Destroy; virtual;" gibt es dann zwei Einträge für Destroy in deiner Klasse.
Free kennt nur den Index des orginalen Destroy in der Tabelle, den schon die Klasse TObject deklariert.
Deshalb immer override für Destroy:
Delphi-Quellcode:
{...}
destructor Destroy; override;