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 section 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
Go to the first, previous, next, last section, table of contents.