Thema: Delphi Array korrekt freigeben

Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.497 Beiträge
 
Delphi 12 Athens
 
#5

AW: Array korrekt freigeben

  Alt Heute, 07:50
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.
  Mit Zitat antworten Zitat