Destroy gibt immer frei,
aber es sollte "normal" eigentlich
NIE direkt aufgerufen werden.
(wäre schön, wenn es standardmäßig protected wäre)
Free gibt frei ... bei NIL knallt es aber nicht, da es einem
if Assiged(obj) then obj.Destroy;
entspricht.
FreeAndNil müsste eigentlich NilAndFree heißen,
denn es entspricht keinem
sondern einem
Delphi-Quellcode:
obj := nil;
obj.Free;
// ähhhh, ich meine natürlich
tmp := obj;
obj := nil;
tmp.Free;
Es setzt also
immer die Variable auf NIL, selbst wenn es im Free/Destroy knallt.