mprobe()

Updated: April 19, 2023

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:

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:

QNX Neutrino

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.