Angenommen meine Delphi-Klassen wie folgt aussehen:Wie sollte ich ein Array von Objekten in einem Delphi 7 Destruktor freigeben?
interface
type
TMySubInfo = class
public
Name : string;
Date : TDateTime;
Age : Integer;
end;
TMyInfo = class
public
Name : string;
SubInfo : array of TMySubInfo;
destructor Destroy; override;
end;
implementation
destructor TMyInfo.Destroy;
begin
// hmmm..
end;
end.
richtig zu reinigen, was in der destructor gehen sollte? Ist es genug zu tun SetLength(SubInfo,0)
, oder muss ich durchlaufen und frei jedes TMySubInfo
? Muss ich überhaupt etwas tun?
Ja, ich rufe TMySubInfo.Create in einer Schleife, um sie zu erstellen. Sobald ich sie erstellt habe, muss ich keine hinzufügen oder entfernen, weshalb ich ein einfaches Array gewählt habe. – Blorgbeard
Auch angenommen, dass ich sie in einer Schleife freigebe, muss ich auch SetLength (0) danach? – Blorgbeard
Sie müssen SetLength nicht aufrufen. Dynamische Arrays werden automatisch bereinigt, sobald der Referenzzähler auf 0 geht. –