Compartir a través de


_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 errnoENOSYS.

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

Consulte también

Asignación de memoria
_heapadd
_heapmin
_heapset
_heapwalk