_heapchk

在堆上运行一致性检查。

语法

int _heapchk( void );

返回值

_heapchk 返回 Malloc.h 中定义的以下整数清单常量之一。

返回值 条件
_HEAPBADBEGIN 初始标头信息不正确或找不到。
_HEAPBADNODE 找到错误节点,或堆已损坏。
_HEAPBADPTR 指向堆的指针无效。
_HEAPEMPTY 尚未初始化堆。
_HEAPOK 堆看起来一致。

此外,如果出现错误, _heapchk 会将 errno 设置为 ENOSYS

备注

_heapchk 函数通过检查堆的最小一致性来帮助调试与堆有关的问题。 如果操作系统不支持 _heapchk(例如 Windows 98),则函数返回 _HEAPOK 并将 errno 设置为 ENOSYS

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

要求

例程 必需的标头 可选标头
_heapchk <malloc.h> <errno.h>

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

示例

// crt_heapchk.c
// This program checks the heap for
// consistency and prints an appropriate message.

#include <malloc.h>
#include <stdio.h>

int main( void )
{
   int  heapstatus;
   char *buffer;

   // Allocate and deallocate some memory
   if( (buffer = (char *)malloc( 100 )) != NULL )
      free( buffer );

   // Check heap status
   heapstatus = _heapchk();
   switch( heapstatus )
   {
   case _HEAPOK:
      printf(" OK - heap is fine\n" );
      break;
   case _HEAPEMPTY:
      printf(" OK - heap is empty\n" );
      break;
   case _HEAPBADBEGIN:
      printf( "ERROR - bad start of heap\n" );
      break;
   case _HEAPBADNODE:
      printf( "ERROR - bad node in heap\n" );
      break;
   }
}
OK - heap is fine

另请参阅

内存分配
_heapadd
_heapmin
_heapset
_heapwalk