Thema: Delphi Eigener Destruktor

Einzelnen Beitrag anzeigen

Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Eigener Destruktor

  Alt 1. Apr 2004, 12:07
Zitat von Robert Marquardt:
Deine Vorstellung von Free ist falsch. Es ruft Destroy auf, aber ein Mehrfachaufruf wird nicht abgefangen.
Was (mit Hilfe von Compilermagie) abegefangen wird ist das bei a.Free der Aufruf unterbleibt falls a = nil ist.
Ich glaub eher deine vorstellung ist falsch

Was solld daran bitte magie sein? :
Delphi-Quellcode:
procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;
Wie soll der compiler auch wissen wann a = nil ist? er optimiert vielleicht unsinnige aufrufe, aber sonst auch nix! Self = a da self der unsichtbare data-pointer ist. Also macht es keinen unterschied ob ich
a.free; schreibe, oder ob ich
if a<>nil then a.destroy; mache!

Zitat:
Es ruft Destroy auf, aber ein Mehrfachaufruf wird nicht abgefangen.
Mehrfach nicht, aber da destroy virtuell ist in gewisser weise schon
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat