mprobe()
Perform consistency check on memory
Synopsis:
#include <malloc.h>
enum mcheck_status mprobe(void * ptr);
Arguments:
- ptr
- A pointer to the start of the heap block.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The mprobe() function attempts to perform consistency checks on the allocated block specified by ptr, which was previously returned by a call to calloc() , malloc() or realloc() .
Consistency checks look for inconsistencies within the block header or in the block trailer byte. They may also detect block overruns.
The level of checking provided depends on which version of the allocator you've linked the application with:
- C library — minimal consistency checking.
- Nondebug version of the malloc library — a slightly greater level of consistency checking.
- Debug version of the malloc library — extensive consistency checking, with tuning available through the use of the mallopt() function.
Returns:
One of the values of the mcheck_status enumeration:
- MCHECK_DISABLED
- Consistency checking isn't currently enabled, or consistency information isn't available for this block.
- MCHECK_OK
- There are no inconsistencies in this block.
- MCHECK_HEAD
- The block header is corrupted.
- MCHECK_TAIL
- The block trailer byte is corrupted or there has been a block overrun.
- MCHECK_FREE
- The ptr argument doesn't point to an allocated heap block.
Classification:
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | No |
Thread | Yes |
Caveats:
Calling mprobe() on a pointer already deallocated by a call to free() or realloc() could corrupt the memory allocator's data structures and result in undefined behavior.