Unless
–disable-alloc was specified during configuration then the following memory allocation and de-allocation debugging features are provided by libcwd:
- Checking if a pointer that is passed to a memory de-allocation function is valid; and if this pointer was previously returned by a corresponding allocation function.
- Finding the start, size, place of allocation in the source code and allocator type of an allocated memory block when given a pointer which points inside of it (see Finding (Information About) Memory Allocations).
- Providing means to add type info and a description to the Allocated memory Overview (using
AllocTag()
).
- Listing an overview of allocated memory to a Debug Object.
- Boundary checks of allocated blocks, by means of magic numbers (see also --enable-magic (CWDEBUG_MAGIC)).
Unfortunately it is impossible to support feature 3. in C++ without putting hooks in your code:
- After every memory allocation, the returned pointer should be passed to
AllocTag()
, passing information that needs to be included in the Allocated memory Overview (this is not needed, though allowed, after a call to realloc()
).
A missing
AllocTag()
will only have effect on the Allocated memory Overview, showing
<unknown type>
instead of the type and a description of the allocated object.