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?