Thema: Delphi Free oder FreeAndNil=

Einzelnen Beitrag anzeigen

Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Free oder FreeAndNil=

  Alt 27. Aug 2009, 08:41
Im Großen und Ganzen - dann, wenn du das Objekt auf <> NIL checkst. Also falls ein paar deiner Funktionen solche checks haben, wirds Fehler geben, falls die Instanz schon zerstört wurde.

Delphi-Quellcode:
var
  X: TControl;
begin
  X := TControl.Create( Self );
  X.Parent := Self;
  Randomize;
  case Random(2) of
    0: X.Free;
  else
    FreeAndNil( X );
  end;
  if Assigned( X ) then // #1#
    X.Free;
#1#: Falsl bei der zuvorigen case Abfrage 0 das Ergebnis war, dann wurde das Objekt nur zerstört, die Variable X enthält jedoch noch die Adresse. Somit schlägt Assigned fehl, da es auf NIL prüft ... wohingegen FreeAndNil wie schon gesagt wurde, die Variable nach dem Zerstören auch auch NIL setzt.

MfG
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat