Compartir a través de


_heapset

Comprueba que los montones mantienen una coherencia mínima y establece las entradas libres a un valor especificado.

Importante

Esta función está obsoleta. A partir de Visual Studio 2015, no está disponible en CRT.

Sintaxis

int _heapset(
   unsigned int fill
);

Parámetros

fill
Carácter de relleno.

Valor devuelto

_heapset devuelve una de las siguientes constantes de manifiesto enteras, definidas en Malloc.h.

Valor Descripción
_HEAPBADBEGIN La información de encabezado inicial no es válida o no se encuentra.
_HEAPBADNODE Se ha encontrado un montón dañado o un nodo incorrecto.
_HEAPEMPTY El montón no está inicializado.
_HEAPOK El montón parece ser coherente.

Además, si se produce un error, _heapset establece errno en ENOSYS.

Comentarios

La función _heapset muestra las ubicaciones de memoria libre o los nodos que se han sobrescrito accidentalmente.

_heapset comprueba la coherencia mínima en el montón y, después, establece cada byte de las entradas libres del montón al valor fill . Este valor conocido muestra las ubicaciones de memoria del montón que contienen nodos libres y las que contienen datos que se escribieron involuntariamente en la memoria liberada. Si el sistema operativo no admite _heapset(por ejemplo, Windows 98), la función devuelve _HEAPOK y establece en errnoENOSYS.

Requisitos

Routine Encabezado necesario Encabezado opcional
_heapset <malloc.h> <errno.h>

Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

// 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

Consulte también

Asignación de memoria
_heapadd
_heapchk
_heapmin
_heapwalk