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

Ludo Brands ludo.brands at free.fr
Sat Oct 22 09:14:47 CEST 2011


> 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;
> 

One pitfall: the variable MyObject before MyObject := TMyObject.Create; is
undefined and not necessarily nil. Variables are not initialized by default
and can contain anything. In general, MyObject.Free does not set MyObject to
nil neither.  Good practice is to initialize pointer variables to nil and
resetting them to nil after freeing them whenever assigned() or <>nil is
going to be used.

Ludo




More information about the fpc-pascal mailing list