Einzelnen Beitrag anzeigen

Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#11

Re: EAccessViolation bei Free()

  Alt 3. Dez 2004, 12:48
Zitat von hitzi:
Wird's aber nicht

Wieso wird das eigentlich so von Borland gelöst.
Wäre ein
Delphi-Quellcode:
Obj.Free;
Obj := nil;
nicht kürzer und schneller?
Ich kann mir nur vorstellen, dass es was mit sicherheit zu tuen hat.

Wenn bei deiner Variante im Destructor ne Exception auftritt (sollte natürlich nicht passieren und weiss auch garnicht was dann passiert) wird die Variable nicht auf nil gesetzt.
Bei der Borland Variante wird die Variable vorher wirklich auf nil gesetzt und dann ist es egal, ob ne Exception auftritt.

Warum bei dir nicht Destroy aufgerufen wird, hat teebee ja schon gesagt. Dadurch das Quasi bei FreeAndNil TObject.Free aufgerufen wird, wird auch nur TObject.Destroy aufgerufen. (Hängt mit der VMT zusammen). Machst du aus dem reintroduce ein override, dann sollte es korrekt funktionieren.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat