Question about implementation of new/delete and new[]/delete[] in gnu gcc

Florian Weimer fw@deneb.enyo.de
Wed Mar 13 15:14:00 GMT 2013


* Tim Schumacher:

> Specifically, I was curious about what meta data is stored about the
> allocations (size/# of elements in the array case), and where that
> data is stored.

Certain types require a "cookie" which stores the length, and it is
stored just before the pointer that operator new[] returns.  The rules
for when a cookie is needed are somewhat complex and depend on the ABI
version.  The layout of the cookie field is ABI-dependent as well
(beyond mere differences in word size).

Searching for "cookie" in gcc/cp/*.c should point you into the right
direction.

operator new[] is expanded in-line by the compiler, so most of the
run-time library support routines Jonathan mentioned are not actually
used by GCC, but are provided for use by other compilers.



More information about the Gcc-help mailing list