You can ask malloc to check the consistency of dynamic storage by using the mcheck function. This function is a GNU extension, declared in `malloc.h'.
mcheck tells malloc to perform occasional consistency checks. These will catch things such as writing past the end of a block that was allocated with malloc .
The abortfn argument is the function to call when an inconsistency is found. If you supply a null pointer, then mcheck uses a default function which prints a message and calls abort (see Aborting a Program). The function you supply is called with one argument, which says what sort of inconsistency was detected; its type is described below.
It is too late to begin allocation checking once you have allocated anything with malloc . So mcheck does nothing in that case. The function returns -1 if you call it too late, and 0 otherwise (when it is successful).
The easiest way to arrange to call mcheck early enough is to use the option `-lmcheck' when you link your program; then you don't need to modify your program source at all.
mprobe function lets you explicitly check for inconsistencies in a particular allocated block. You must have already called mcheck at the beginning of the program, to do its occasional checks; calling mprobe requests an additional consistency check to be done at the time of the call.
The argument pointer must be a pointer returned by malloc or realloc . mprobe returns a value that says what inconsistency, if any, was found. The values are described below.
MCHECK_DISABLED mcheck was not called before the first allocation. No consistency checking can be done. MCHECK_OK MCHECK_HEAD MCHECK_TAIL MCHECK_FREE