Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Object richtig freigeben

  Alt 14. Jun 2017, 14:35

Ein Prüfung auf (..) Assigned wird bei Free nicht funktionieren, da Free den Zeiger nicht auf Nil setzt.
Wirklich?
Ja, wirklich. Ich finde das eigentlich auch vernünftig und verwende grundsätzlich nur Free und nicht FreeAndNil. FreeAndNil wiegt einen nur in falscher Sicherheit, da es ja auch noch weitere Referenzen auf das Objekt geben kann, die von FreeAndNil nicht auf nil gesetzt werden.

Delphi-Quellcode:
var
  x,y: TObject;
begin
  x := TObject.Create;
  y := x;
  FreeAndNil(x);
  if Assigned(x) then WriteLn('x assigned');
  if Assigned(y) then WriteLn('y assigned');
end;
Edit: Nur zur Klarstellung, das bezieht sich jetzt natürlich auf klassisches Delphi, nicht auf ARC.
  Mit Zitat antworten Zitat