_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