_heapset
Sprawdza stertę dla minimalnej spójności i ustawia wolne wpisy na określoną wartość.
Ważne
Ta funkcja jest przestarzała. Począwszy od programu Visual Studio 2015, nie jest on dostępny w CRT.
Składnia
int _heapset(
unsigned int fill
);
Parametry
fill
Znak wypełnienia.
Wartość zwracana
_heapset
Zwraca jedną z następujących stałych manifestu liczby całkowitej zdefiniowanych w pliku Malloc.h.
Wartość | Opis |
---|---|
_HEAPBADBEGIN |
Początkowe informacje nagłówka są nieprawidłowe lub nie znaleziono. |
_HEAPBADNODE |
Sterta uszkodzona lub zły węzeł znaleziono. |
_HEAPEMPTY |
Sterta nie została zainicjowana. |
_HEAPOK |
Sterta wydaje się być spójna. |
Ponadto, jeśli wystąpi błąd, _heapset
ustawia wartość errno
ENOSYS
.
Uwagi
Funkcja _heapset
pokazuje wolne lokalizacje pamięci lub węzły, które zostały przypadkowo zastąpione.
_heapset
sprawdza minimalną spójność na stercie, a następnie ustawia każdy bajt wolnych wpisów sterta na fill
wartość. Ta znana wartość pokazuje, które lokalizacje pamięci sterta zawierają wolne węzły i które zawierają dane, które zostały przypadkowo zapisane w zwolnionej pamięci. Jeśli system operacyjny nie obsługuje _heapset
(na przykład Windows 98), funkcja zwraca _HEAPOK
i ustawia wartość errno
ENOSYS
.
Wymagania
Procedura | Wymagany nagłówek | Opcjonalny nagłówek |
---|---|---|
_heapset |
<malloc.h> | <errno.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność w temacie Wprowadzenie.
Przykład
// 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