Thema: Delphi Frage zu FreeAndNil

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#16

Re: Frage zu FreeAndNil

  Alt 26. Feb 2010, 11:32
Zitat:
Delphi-Quellcode:
if Objekt <> nil then
begin
  Objekt.Free;
  Objekt := nil;
end;
Eigentlich reicht ja
Delphi-Quellcode:
Objekt.Free;
Objekt := nil;
Dieses ( if Assigned(Objekt) then )
if Objekt <> nil then wird ja in .Free geprüft.

FreeAndNil prüft dieses auch nicht mehr, da es inter wiederum .Free aufruft, welches das ja prüft.
(aber im Prinzip isses ja egal)



Aber das mit der "Kaskade" stimmt schon, da durch FreeAndNil einfach sichergestellt ist, daß die Objekt-Variable auf nil gesetzt wird.
Delphi-Quellcode:
// Objekt := nil; >> wird sicher auf nil gesetzt
// Objekt.Free; >> exception

Temp := Objekt;
Objekt := nil; >> wird sicher auf nil gesetzt
Temp.Free; >> exception
Hier ist dieses eben nicht sichergestellt, wie negaH es eben so schön erklärte
Delphi-Quellcode:
Objekt.Free; >> exception
Objekt := nil; >> wird NICHT mehr auf nil gesetzt,
                >> da der Programmablauf vorher abbricht
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat