[fpc-pascal] How are Assigned, Free, Nil and Destroy related?

Felipe Monteiro de Carvalho felipemonteiro.carvalho at gmail.com
Sat Oct 22 08:20:47 CEST 2011


I understand Assigned as being the same as <> nil, so Assigned(Object)
= Object <> nil

I vaguely remember that it could be safer in some corner case, but I
don't remember ever meting that.

Free is how you release the memory allocated for a object. Free calls
Destroy. Never call Destroy manually. When you implement the
destructor you always implement Destroy, never change Free.

Nil is not a routine, it is a value, it means that the object is
empty, it does not exist / is not allocated. Nil in existing
implementations that I know is represented by the value zero.

The typical life-cycle of a object is:

MyObject := TMyObject.Create;
try
  MyObject.DoSomething();
finally
  MyObject.Free;
end;

To implement this object you should implement Create, DoSomething and Destroy.

-- 
Felipe Monteiro de Carvalho



More information about the fpc-pascal mailing list