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

Felipe Monteiro de Carvalho felipemonteiro.carvalho at gmail.com
Sat Oct 22 09:49:32 CEST 2011

On Sat, Oct 22, 2011 at 9:36 AM, Frank Church <vfclists at gmail.com> wrote:
> Does that mean that Free itself reclaims the memory used by the object's
> fields and properties but does not release the memory used by the TObject or
> pointer itself, where as setting it to nil or executing Destroy does, or
> does Destroy do something different?

No, you got parts of it wrong:

*Free calls Destroy which releases the memory of the object itself.

*Nothing releases the memory of the pointer to the object. You don't
want to release the 4 or 8 bytes of the pointer. If you did release
it, then your application would crash when trying to read the pointer
to check if it is nil.

*Destroy implements releasing the memory of the object. Free calls Destroy.

*Setting the object to nil does just that. It changes the pointer to
the object to have the value nil (zero). It does not release the

Felipe Monteiro de Carvalho

More information about the fpc-pascal mailing list