_heapchk
Exécute des vérifications de cohérence sur le tas.
Syntaxe
int _heapchk( void );
Valeur retournée
_heapchk
retourne une des constantes manifestes entières suivantes définies dans Malloc.h.
Valeur retournée | Condition |
---|---|
_HEAPBADBEGIN |
Les informations d’en-tête initiales sont incorrectes ou introuvables. |
_HEAPBADNODE |
Un nœud incorrect a été trouvé ou le tas est endommagé. |
_HEAPBADPTR |
Le pointeur vers le tas n’est pas valide. |
_HEAPEMPTY |
Le tas n’a pas été initialisé. |
_HEAPOK |
Le tas est cohérent. |
En outre, si une erreur se produit, _heapchk
définit errno
sur ENOSYS
.
Notes
La fonction _heapchk
aide à déboguer les problèmes liés au tas en vérifiant la cohérence minimale de celui-ci. Si le système d’exploitation ne prend pas en charge _heapchk
(par exemple, Windows 98), la fonction retourne _HEAPOK
et définit la ENOSYS
valeur errno
.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
Routine | En-tête requis | En-tête facultatif |
---|---|---|
_heapchk |
<malloc.h> | <errno.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_heapchk.c
// This program checks the heap for
// consistency and prints an appropriate message.
#include <malloc.h>
#include <stdio.h>
int main( void )
{
int heapstatus;
char *buffer;
// Allocate and deallocate some memory
if( (buffer = (char *)malloc( 100 )) != NULL )
free( buffer );
// Check heap status
heapstatus = _heapchk();
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;
}
}
OK - heap is fine