Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

AW: FreeAndNil macht Probleme

  Alt 27. Sep 2020, 14:24
Ich danke euch beiden. Verstehe es aber trotzdem nicht ganz: FreeAndNil setzt die Referenz auf nil und ruft dann Free auf. Wieso muss der Compiler dann mein (?) FreeAndNil kennen?
Du hast ja Free nicht überschrieben (weil unmöglich - überschreiben geht ja nur bei virtuellen Methoden)

Wenn du dir FreeAndNil anguckst, steht da:
Delphi-Quellcode:
procedure FreeAndNil(var Obj);
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;
D.h. .Free wird auf eine Variable von Typ TObject aufgerufen. Und das ist OK, denn TObject is ja hinreichend.

Nur ohne das override wird hier auch immer TObject.Free aufgerufen. Nur bei virtuellen Methoden wird hier nachgeuckt, ob die Methode überschrieben wurde.
  Mit Zitat antworten Zitat