Updated: July 2009
Verifies that a specified memory block is in the local heap and that it has a valid debug heap block type identifier (debug version only).
int _CrtIsMemoryBlock( const void *userData, unsigned int size, long *requestNumber, char **filename, int *linenumber );
The _CrtIsMemoryBlock function verifies that a specified memory block is located within the application's local heap and that it has a valid block type identifier. This function can also be used to obtain the object allocation order number and the source file name/line number where the memory block allocation was originally requested. Passing non-NULL values for the requestNumber, filename, or linenumber parameters causes _CrtIsMemoryBlock to set these parameters to the values in the memory block's debug header, if it finds the block in the local heap. When _DEBUG is not defined, calls to _CrtIsMemoryBlock are removed during preprocessing.
If _CrtIsMemoryBlock fails, it returns FALSE and the output parameters are initialized to default values: requestNumber and lineNumber are set to 0 and filename is set to NULL.
Because this function returns TRUE or FALSE, it can be passed to one of the _ASSERT macros to create a simple debugging error handling mechanism. The following example causes an assertion failure if the specified address is not located within the local heap:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber, &filename, &linenumber ) );
For more information about how _CrtIsMemoryBlock can be used with other debug functions and macros, see Using Macros for Verification and Reporting. For information about how memory blocks are allocated, initialized, and managed in the debug version of the base heap, see Memory Management and the Debug Heap.
Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.