_heapchk

Выполняет проверки согласованности в куче.

Синтаксис

int _heapchk( void );

Возвращаемое значение

_heapchk возвращает одну из следующих целочисленных констант манифеста, определенных в malloc. h.

Возвращаемое значение Условие
_HEAPBADBEGIN Начальные сведения о заголовке повреждены или не найдены.
_HEAPBADNODE Обнаружен недопустимый узел или куча повреждена.
_HEAPBADPTR Недопустимый указатель на кучу.
_HEAPEMPTY Куча не инициализирована.
_HEAPOK Вероятно, куча согласована.

Кроме того, при возникновении ошибки _heapchkустанавливает значениееносис.

Remarks

Функция _heapchk помогает отладить проблемы, связанные с кучей, с помощью проверки на наличие минимальной согласованности кучи. если операционная система не поддерживает _heapchk(например, Windows 98), функция возвращает _HEAPOKи устанавливает дляеносис.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это, см. раздел глобальное состояние в CRT.

Требования

Подпрограмма Обязательный заголовок Необязательный заголовок
_heapchk <malloc.h> <о. з. h>

Дополнительные сведения о совместимости см. в разделе Compatibility.

Пример

// 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