_CrtIsMemoryBlock

确认指定的内存块位于本地堆,并且具有有效的调试堆块类型标识符(仅限调试版本)。

语法

int _CrtIsMemoryBlock(
   const void *userData,
   unsigned int size,
   long *requestNumber,
   char **filename,
   int *lineNumber
);

参数

userData
指向要验证的内存块开头的指针。

size
指定块的大小(以字节为单位)。

requestNumber
指向块分配编号的指针或 NULL

filename
指向已请求块的源文件名的指针或 NULL

lineNumber
指向源文件中的行号的指针或 NULL

返回值

如果指定的内存块位于本地堆,并且具有有效的调试堆块类型标识符,则 _CrtIsMemoryBlock 返回 TRUE,否则,该函数返回 FALSE

备注

_CrtIsMemoryBlock 函数确认指定的内存块位于应用程序的本地堆,并且具有有效的块类型标识符。 此函数还可用于获取最初请求内存块分配的对象分配序号和源文件名/行号。 传递到 requestNumberfilenamelineNumber 参数的非 NULL 值导致 _CrtIsMemoryBlock 将这些参数设置为内存块调试标头中的值(如果它在本地堆中找到该内存块)。 未定义 _DEBUG 时,会在预处理过程中删除对 _CrtIsMemoryBlock 的调用。

如果 _CrtIsMemoryBlock 失败,则返回 FALSE,输出参数将初始化为默认值:将 requestNumberlineNumber 设置为 0,将 filename 设置为 NULL

因为此函数返回 TRUEFALSE,因此可将它传递到一个 _ASSERT 宏,以创建基本的调试错误处理机制。 如果本地堆中没有指定的地址,则以下示例将导致断言失败:

_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
          &filename, &linenumber ) );

若要详细了解如何将 _CrtIsMemoryBlock 与其他调试函数和宏一起使用,请参阅用于报告的宏。 若要了解如何在基堆的调试版本中分配、初始化和管理内存块,请参阅 CRT 调试堆详细信息

要求

例程 必需的标头
_CrtIsMemoryBlock <crtdbg.h>

有关兼容性的详细信息,请参阅 兼容性

仅限 C 运行时库的调试版本。

示例

请参阅 _CrtIsValidHeapPointer 一文的示例。

另请参阅

调试例程