Defined in stdlib.h, the
__heapvalid() function performs a consistency check on the heap.
__heapvalid() outputs full information about
every free block if the
verbose parameter is nonzero.
Otherwise, it only outputs errors.
The function outputs its results by calling the output function
that must work like
fprintf(). The first parameter
dprint() is the supplied pointer
You can pass
fprintf() itself, provided you
cast it to the right function pointer type. This type is defined
typedef for convenience. It is called
__heapvalid((__heapprt) fprintf, stderr, 0);
NoteIf you call
fprintf()on a stream that you have not already sent output to, the library calls
malloc()internally to create a buffer for the stream. If this happens in the middle of a call to
__heapvalid(), the heap might be corrupted. You must therefore ensure you have already sent some output to
stderr. The example code fails if you have not already written to the stream.
This function is not part of the C library standard, but the Arm® C library supports it as an extension.