According to one embodiment of the invention, a method of auditing memory
in a system comprises receiving a request for memory from an application
and populating a memory tag with a stack depth component and a traceback
stack component. The traceback stack component contains a pointer to a
traceback stack. The stack depth component defines a size of the
traceback stack. The traceback stack contains information from a program
stack associated with the application. The embodiment may further
comprise determining if a memory pool has enough free memory to satisfy
the request and allocating, from the memory pool, a memory allocation
unit if the memory pool has enough free memory to satisfy the request.
The memory allocation unit may include a data area and a footer. The data
area defines an area to which the application may write data and the
footer bounds the data area with a special code.