Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
Delphi 2007 Professional
|
Re: Wann ein Objekt freigeben?
12. Sep 2006, 08:26
Hi,
ich habe es mir angewöhnt alle im constructor creierten Objecte immer im Destructor frei zu geben. Genau so, wie es alzaimar beschrieben hat. Dies auch ungeachtet der Tatsache, das der Owner die Objecte bei seinem Ableben mit frei gibt. dafür gibt es zwei Gründe:
1. reine Paranoia; was ich selber frei gegeben habe ist auch frei gegeben,
2. es schafft einen sauberen Stiel; wenn ich mich grundsätzlich immer sofort um die ordnungsgemäße Freigabe kümmere, dann vergesse ich es seltener und habe grundsätzlich schon mal sauberen Code. Auch für die Lesbarkeit des Codes, wie lange ein Object lebt, ist es besser.
Du soltest bei einigen Objecten jedoch aufpassen. TObjectList gibt automatisch die gespecherten Objecte frei, wenn Du ein Element aus der Liste entfernst. Dies gilt jedoch nur, wenn die Eigenschaft OwnsObjects auf True steht.
Also im Zweifelsfall nach meiner Meinung immer selber frei geben (wie alzaimar beschrieben hat) und bei Sonderfällen wie TObjectList nach Hilfe und eigener Strategie handeln.
Gruß oki
|