get size of malloc'd object

brett at wjvax.UUCP brett at wjvax.UUCP
Sat Jun 21 01:19:25 AEST 1986


In article <2206 at peora.UUCP> jer at peora.UUCP (J. Eric Roskos) writes:
>
>	It is really hard to come up which general purpose algorithmic 
>	solutions to problems without having even a glimmer of what
>	environment you are talking about ...
>
>Sure it is.  Just write your own routine to call malloc; allocate a
>sizeof(int) worth of extra space, then store the size of the thing you
>malloc'ed in the int at the front of the allocated block, advance the
>pointer past the place where your stored the size, and return that as
>the pointer to the block you allocated.  The size of the object is then
>found in the word preceeding the location pointed to by the object pointer.
>
>Also provide a routine to deallocate the block by backing the pointer up
>before calling free().
>
>This approach is portable, simple, and easy to understand.
>Also it doesn't require any assumptions about what kind of objects are
>being allocated.

In fact, this assumes that the resulting pointer

	(malloc(len+sizeof(int))+sizeof(int))

is still well-aligned.  This is only true if sizeof(int) is the most coarse
alignment boundary on the machine.  If, for example, structures require more
coarse alignment, attempting to cast the above pointer to a structure pointer
will fail.

-------------
Brett Galloway
{pesnta,twg,ios,qubix,turtlevax,tymix,vecpyr,certes,isi}!wjvax!brett



More information about the Comp.lang.c mailing list