Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
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