Thema: Delphi Problem mit FreeAndNil

Einzelnen Beitrag anzeigen

StinkyWinky

Registriert seit: 24. Sep 2007
5 Beiträge
 
#1

Problem mit FreeAndNil

  Alt 30. Jun 2008, 08:54
Hallo erstmal!

Ich habe ein Problem mit FreeAndNil().

Meine Testklasse:
Delphi-Quellcode:
type
  TTest = class(TObject)
  public
    constructor Create();
    destructor Free;
    destructor Destroy(); override;
  end;

constructor TTest.Create;
begin
  inherited;
end;

destructor TTest.Free;
begin

end;

destructor TTest.Destroy;
begin
  inherited;
end;
und folgenden TestCode:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  MyTest1, MyTest2 : TTest;
begin
  MyTest1 := TTest.create();
  MyTest1.Free; // <-- ruft TTest.Free auf, wie erwartet

  MyTest2 := TTest.create();
  FreeAndNil(MyTest2); // <-- ruft TTest.Destroy auf, jedoch nicht TTest.Free
end;
Nun setzte ich in beiden Destruktoren einen Breakpoint, folgendes passiert:
  • Destruktor TTest.Free wird von MyTest1.Free aufgerufen
  • Destruktor TTest.Destroy wird von FreeAndNil(MyTest2) aufgerufen
Warum wird TTest.Free von FreeAndNil nicht aufgerufen?

Ich benutze Delphi 7.

Danke für Hinweise und Gruss
Hugo
  Mit Zitat antworten Zitat