Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: Interessantes Destruktor Problem

  Alt 7. Jan 2011, 09:53
Ich behaupte also man darf so wie oben nicht programmieren
Ich behaupte das Gegenteil!

Erzeuge mal eine Instanz der folgenden Klasse und gib sie wieder frei:
Delphi-Quellcode:
type
  TMyObject = class
  public
    destructor Destroy; override;
    procedure FreeInstance; override;
  end;

destructor TMyObject.Destroy;
begin
  ShowMessage('Destroy before');
  inherited;
  ShowMessage('Destroy after');
end;

procedure TMyObject.FreeInstance;
begin
  ShowMessage('FreeInstance');
  inherited;
end;
Ich bekomme folgende Meldungen:

Destroy before
Destroy after
FreeInstance

Da die Freigabe des Speichers erst in TObject.FreeInstance erfolgt, ist die Instanz während des gesamten Destroy noch existent. (Getestet in XE ohne FastMM4)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat