Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Token erst zum Programmende wieder freigaben?

  Alt 17. Feb 2014, 13:55
Vielen Dank für Eure Antworten!

Ich schlussfolgere:
1. Es ist OK, ein Token (Zeiger, Objekt, etc.) bei Programmstart global zu erzeugen, sodass er während der gesamten Ausführungszeit zur Verfügung steht.
2. Auch wenn bei Programmende alles, was erzeugt wurde, automatisch freigegeben wird, ist es stilistisch besser, dies im Finalization block selbst zu tun.
Eine Instanz wird immer dort freigegeben, wo diese auch erzeugt wird.
initialization -> finalization ,
Create -> Destroy ,
OnShow -> OnClose .

Ausnahmen bestehen nur dort, wo das Lifetime-Management delegiert wird.
Delphi-Quellcode:
TComponent.Create( AOwner ); // der Owner kümmert sich um die Freigabe
TObjectList.Add( TObject.Create ); // die Liste kümmert sich um die Freigabe, wenn OwnsObjects

var
  MyInterface : IInterface;
MyInterface := TInterfacedObject.Create; // der Referenzzähler kümmert sich um die Freigabe
Geht man anders vor, so sollte man ganz genau wissen was da gerade macht (Referenzen auf nil setzen)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (17. Feb 2014 um 13:59 Uhr)
  Mit Zitat antworten Zitat