_heapset
Controlla la coerenza minima negli heap e imposta le voci disponibili su un valore specificato.
Importante
questa funzione è obsoleta. A partire da Visual Studio 2015 non è disponibile in CRT.
Sintassi
int _heapset(
unsigned int fill
);
Parametri
fill
Carattere di riempimento.
Valore restituito
_heapset
restituisce una delle costanti manifeste di tipo Integer seguenti definite in Malloc.h.
valore | Descrizione |
---|---|
_HEAPBADBEGIN |
Le informazioni di intestazione iniziali non sono valide o non sono state trovate. |
_HEAPBADNODE |
L'heap è danneggiato o è stato travato un nodo non valido. |
_HEAPEMPTY |
L'heap non è stato inizializzato. |
_HEAPOK |
L'heap risulta coerente. |
Inoltre, se si verifica un errore, _heapset
imposta errno
su ENOSYS
.
Osservazioni:
La funzione _heapset
mostra i nodi o le posizioni di memoria disponibili che sono stati sovrascritti accidentalmente.
_heapset
verifica la coerenza minima nell'heap e quindi imposta ogni byte delle voci disponibili dell'heap sul valore fill
. Questo valore noto mostra le posizioni di memoria dell'heap che contengono nodi disponibili e quelle che contengono dati scritti accidentalmente nella memoria liberata. Se il sistema operativo non supporta _heapset
(ad esempio, Windows 98), la funzione restituisce _HEAPOK
e imposta errno
su ENOSYS
.
Requisiti
Ciclo | Intestazione obbligatoria | Intestazione facoltativa |
---|---|---|
_heapset |
<malloc.h> | <errno.h> |
Per altre informazioni sulla compatibilità, vedere la sezione Compatibilità nell'introduzione.
Esempio
// 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