_CrtIsMemoryBlock

验证指定的内存块在本地堆,它包含有效调试堆块类型的标识符 (请只调试版本)。

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

参数

  • [in] userData
    对的开头的指针内存块验证。

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

  • [out] requestNumber
    对于块或 NULL的分配编号的指针。

  • [out] filename
    对请求块或 NULL源文件的名称的指针。

  • [out] linenumber
    对行号的指针在源文件级别或 NULL。

返回值

_CrtIsMemoryBlock 返回 TRUE,如果指定的内存块在本地堆内定位和排列有效调试堆块类型的标识符;否则,该函数返回 FALSE。

备注

_CrtIsMemoryBlock 功能验证指定的内存块在应用程序的本地堆内,找出并具有有效的块类型的标识符。 此函数还可用于获取对象分配订单数量,并内存分配的源文件名和行号最初请求。 ,如果找到本地堆,的块通过 requestNumber的非空值, filename或 linenumber 参数原因 _CrtIsMemoryBlock 设置这些参数添加到内存块的值调试标头。 当 _DEBUG 未定义时,在预处理期间,对 _CrtIsMemoryBlock 中移除。

如果 _CrtIsMemoryBlock 失败,则返回 FALSE ,并输出参数初始化为默认值: requestNumber 和 lineNumber 设置为 0,并 filename 设置为 NULL。

由于此函数返回 TRUE 或 FALSE,可以传递给之一 _ASSERT 宏创建一个简单的调试错误处理机制。 ,如果指定的地址不在本地堆内,该文件位于下面的示例生成断言失败:

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

有关 _CrtIsMemoryBlock 方式的更多信息可与其他调试函数和宏,请参见 使用验证或报告的宏。 有关如何的信息存储在基堆的调试版本中分配,初始化,并管理,请参见 内存管理和调试堆

要求

实例

必需的头

_CrtIsMemoryBlock

crtdbg.h

有关更多兼容性信息,请参见中介绍的 兼容性

只调试 C 运行库 的版本。

示例

_CrtIsValidHeapPointer 主题参见示例。

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例

请参见

参考

调试实例