[Previous]
[Contents]
[Next]

_heapchk(), _bheapchk(), _fheapchk(), _nheapchk()

perform a consistency check for a heap

Synopsis:

#include <malloc.h>
int  _heapchk( void );
int _bheapchk( __segment seg );
int _fheapchk( void );
int _nheapchk( void );

Description:

The _heapchk() functions, along with _heapset() and _heapwalk(), are provided for debugging heap-related problems in programs.

The _heapchk() functions perform a consistency check on the unallocated memory space or heap. The consistency check determines whether or not all the heap entries are valid. Each function checks a particular heap, as listed below:

_heapchk()
Depends on data model of the program (see below)
_bheapchk()
Based heap specified by seg value; _NULLSEG specifies all based heaps
_fheapchk()
Far heap (outside the default data segment)
_nheapchk()
Near heap (inside the default data segment)

In a small data memory model, the _heapchk() function is equivalent to the _nheapchk() function; in a large data memory model, the _heapchk() function is equivalent to the _fheapchk() function.

Returns:

All four functions return one of the following manifest constants, which are defined in <malloc.h>:

_HEAPOK
The heap appears to be consistent.
_HEAPEMPTY
The heap is empty.
_HEAPBADBEGIN
The heap has been damaged.
_HEAPBADNODE
The heap contains a bad node, or is damaged.

Examples:

#include <stdio.h>
#include <malloc.h>

void main()
  {
    char *buffer;

    buffer = (char *)malloc( 80 );
    malloc( 1024 );
    free( buffer );
    switch( _heapchk() ) {
    case _HEAPOK:
      printf( "OK - heap is good\n" );
      break;
    case _HEAPEMPTY:
      printf( "OK - heap is empty\n" );
      break;
    case _HEAPBADBEGIN:
      printf( "ERROR - heap is damaged\n" );
      break;
    case _HEAPBADNODE:
      printf( "ERROR - bad node in heap\n" );
      break;
    }
  }

Classification:

WATCOM

Safety:
Interrupt handler No
Signal handler No
Thread Yes

See also:

_heapenable(), _heapgrow(), _heapmin(), _heapset(), _heapshrink(), _heapwalk()


[Previous]
[Contents]
[Next]