_heapchk
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

_heapchk

Runs consistency checks on the heap.

int _heapchk( void );

Return Value

_heapchk returns one of the following integer manifest constants defined in MALLOC.H:

_HEAPBADBEGIN
Initial header information is bad or cannot be found.
_HEAPBADNODE
Bad node has been found or heap is damaged.
_HEAPBADPTR
Pointer into heap is not valid.
_HEAPEMPTY
Heap has not been initialized.
_HEAPOK
Heap appears to be consistent.

In addition, if an error occurs, _heapchk sets errno to ENOSYS.

Remarks

The _heapchk function helps debug heap-related problems by checking for minimal consistency of the heap.

Requirements

Routine Required header Optional headers Compatibility
_heapchk <malloc.h> <errno.h> Win NT, Win 2000, Win XP

For additional compatibility information, see Compatibility in the Introduction.

Libraries

All versions of the C run-time libraries.

Example

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

Output

 OK - heap is fine

See Also

Memory Allocation Routines | _heapadd | _heapmin | _heapset | _heapwalk | Run-Time Routines and .NET Framework Equivalents

Show:
© 2016 Microsoft