Einzelnen Beitrag anzeigen

Benutzerbild von LoRd-MuldeR
LoRd-MuldeR

Registriert seit: 9. Okt 2005
Ort: Somewhere over the Slaughterhouse
132 Beiträge
 
Delphi 7 Professional
 
#1

Probleme mit TObject.Free

  Alt 9. Okt 2005, 16:38
Hallo zusammen erstmal!
Ich hätte da mal en kleines Problem und hoffe hier kann mir jemand weiterhelfen

Ich habe ein eigenes Objekt nach folgendem Schema definiert:

Delphi-Quellcode:
type
  TMyObj = class(TObject)
  public
    constructor Create(Param:String);
    destructor Destroy; override;
  private
    procedure DoSomething;
  end;
das Objekt lässt sich mit Create herstellen und mit Free zerstören

Delphi-Quellcode:
procedure Foobar;
var
  MyObj: TMyObj;
begin
  try
    MyObj := TMyObj.Create('Oi!');

    MyObj.DoSomething;
    [...]
  finally
    MyObj.Free;
  end;
end;
So, nun das Problem:

Ich habe festgestellt, dass ein erneuter Aufruf von .Free - also wenn das Object bereits mit .Free zerstört wurde - zu einem Exception Error führt (Memory Access Violation). So weit ich es verstanden hab, sollte das Objekt doch nach dem ersten .Free aufruf zerstört und somit wieder nil sein. Ein zweiter Aufruf von .Free sollte dies erkennen und keinen Fehler verursachen. Das is doch der Grund, warrum ich .Free anstatt .Destory aufrufe, oder? Iregndwie schein meint Objekt aber nach dem Zerstören durch .Free nich nil zu werden. Ergo: Der Speicher wurde nich korrekt freigegeben.

Wo steckt bloß der Fehler ???
Oder hab ich da was falsch verstanden?
  Mit Zitat antworten Zitat