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


_heapset

Проверяет кучи на предмет минимальной согласованности и задает для свободных записей указанное значение.

Внимание

Эта функция является устаревшей. Начиная с Visual Studio 2015 она недоступна в CRT.

Синтаксис

int _heapset(
   unsigned int fill
);

Параметры

fill
Заполняющий символ.

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

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

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

Кроме того, при возникновении ошибки функция _heapset устанавливает для параметра errno значение ENOSYS.

Замечания

Функция _heapset показывает расположения свободной памяти или узлы, которые были непреднамеренно перезаписаны.

_heapset проверяет кучу на предмет минимальной согласованности, а затем задает значение fill для каждого байта свободных записей кучи. Это известное значение показывает, какие адреса памяти кучи содержат свободные узлы, а какие содержат данные, которые были непреднамеренно записаны в освободившуюся память. Если операционная система не поддерживает _heapset(например, Windows 98), функция возвращает и задает _HEAPOK значение errno ENOSYS.

Требования

Маршрут Обязательный заголовок Необязательный заголовок
_heapset <malloc.h> <errno.h>

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

Пример

// crt_heapset.c
// This program checks the heap and
// fills in free entries with the character 'Z'.

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

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

   if( (buffer = malloc( 1 )) == NULL ) // Make sure heap is
      exit( 0 );                        //    initialized
   heapstatus = _heapset( 'Z' );        // Fill in free entries
   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;
   }
   free( buffer );
}
OK - heap is fine

См. также

Распределение памяти
_heapadd
_heapchk
_heapmin
_heapwalk