_heapchk
Ejecuta comprobaciones de coherencia en el montón.
Sintaxis
int _heapchk( void );
Valor devuelto
_heapchk
devuelve una de las siguientes constantes de manifiesto enteras, definidas en Malloc.h.
Valor devuelto | Condición |
---|---|
_HEAPBADBEGIN |
La información de encabezado inicial es incorrecta o no se puede encontrar. |
_HEAPBADNODE |
Se ha encontrado un nodo incorrecto o el montón está dañado. |
_HEAPBADPTR |
El puntero al montón no es válido. |
_HEAPEMPTY |
No se ha inicializado el montón. |
_HEAPOK |
El montón parece ser coherente. |
Además, si se produce un error, _heapchk
establece errno
en ENOSYS
.
Comentarios
La función _heapchk
ayuda a depurar problemas relacionados con el montón comprobando una coherencia mínima del montón. Si el sistema operativo no admite _heapchk
(por ejemplo, Windows 98), la función devuelve _HEAPOK
y establece en errno
ENOSYS
.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
Routine | Encabezado necesario | Encabezado opcional |
---|---|---|
_heapchk |
<malloc.h> | <errno.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// 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