Поделиться через


_heapchk

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

Синтаксис

int _heapchk( void );

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

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

Возвращаемое значение Condition
_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