> > > On Fri, 16 Dec 2011, dhkblas...@zeelandnet.nl wrote: > >> >> On implementing a linked list I hit to some unexpected (doesn't mean >> incorrect though) behaviour. >> >> >> >> ptest = ^test; >> test = record >> p: pointer; >> end; >> >> >> >> new(mytest); >> >> >> >> When I allocate "mytest" the pointer variable "p" is initialized as >> $ffffffff instead of nil as I did suspect. In my code though I am >> relying on the fact that new pointers are indeed nil so I can allocate >> them accordingly. How can I force and rely on the fact that >> p is always nil? What is the correct procedure here? > > Newly allocated memory is never zeroed out. You must do this manually with > FillChar or FillWord. > This is only done automatically for class instances. > > I will add a note to the docs. > > Michael.
Also you can Zero out records using: var r: TSomeRec = (); Or access the record fields and nil out the ones you want, but () gets it all done in one shot. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal