_heapset
Vérifie la cohérence minimale des tas et définit les entrées libres sur une valeur spécifiée.
Important
Cette fonction est obsolète. Depuis Visual Studio 2015, elle n’est pas disponible dans la bibliothèque CRT.
Syntaxe
int _heapset(
unsigned int fill
);
Paramètres
fill
Caractère de remplissage.
Valeur retournée
_heapset
retourne une des constantes manifestes entières suivantes définies dans Malloc.h.
Valeur | Description |
---|---|
_HEAPBADBEGIN |
Informations d’en-tête initiales non valides ou introuvables. |
_HEAPBADNODE |
Tas endommagé ou nœud incorrect trouvé. |
_HEAPEMPTY |
Tas non initialisé. |
_HEAPOK |
Le tas est cohérent. |
En outre, si une erreur se produit, _heapset
définit errno
sur ENOSYS
.
Notes
La fonction _heapset
affiche les emplacements de mémoire disponible ou les nœuds qui ont été remplacés accidentellement.
_heapset
vérifie la cohérence minimale sur le tas, puis définit chaque octet des entrées libres du tas sur la valeur fill
. Cette valeur connue indique les emplacements de mémoire du tas qui contiennent des nœuds libres et ceux qui contiennent des données qui ont été écrites accidentellement dans de la mémoire libérée. Si le système d’exploitation ne prend pas en charge _heapset
(par exemple, Windows 98), la fonction retourne _HEAPOK
et définit la ENOSYS
valeur errno
.
Spécifications
Routine | En-tête requis | En-tête facultatif |
---|---|---|
_heapset |
<malloc.h> | <errno.h> |
Pour plus d'informations sur la compatibilité, voir Compatibilité dans l'introduction.
Exemple
// 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