Mit Finalize muss man sehr vorsichtig sein, sonst erzeugt man an anderer Stelle eine Zugriffsverletzung.
Delphi-Quellcode:
type
TMyRecord = record
A: Integer;
B: String;
C: IInterface;
procedure Clear;
end;
implementation
procedure TMyRecord.Clear;
begin
Finalize(Self); // für Strings, Interfaces, Array usw.
FillChar(Self, SizeOf(Self), 0);
end;
Finalize prüft ob B und C auf Nil verweisen.
Ist das nicht der Fall, wird der Referenzzähler des Strings oder Objects verringert.
Fällt der Referenzzähler auf 0 wird der String oder das Object freigegeben, der Inhalt der Variablen aber nicht verändert.
Durch FillChar verweisen B und C danach auf Nil.