Freigeben über


_heapchk

Führt Konsistenzüberprüfungen auf dem Heap aus.

Syntax

int _heapchk( void );

Rückgabewert

_heapchk gibt eine der folgenden ganzzahligen Manifestkonstanten zurück, die in Malloc.h definiert sind.

Rückgabewert Bedingung
_HEAPBADBEGIN Anfängliche Kopfzeileninformationen sind ungültig oder können nicht gefunden werden.
_HEAPBADNODE Ein ungültiger Knoten wurde gefunden, oder Heap ist beschädigt.
_HEAPBADPTR Der Zeiger in heap ist ungültig.
_HEAPEMPTY Heap wurde nicht initialisiert.
_HEAPOK Der Heap scheint konsistent zu sein.

Wenn ein Fehler auftritt, setzt _heapchkerrno zudem auf ENOSYS.

Hinweise

Die _heapchk-Funktion hilft, Heap-bezogene Probleme zu debuggen, indem auf minimale Konsistenz des Heaps gesucht wird. Wenn das Betriebssystem nicht unterstützt _heapchkwird (z. B. Windows 98), gibt die Funktion zurück _HEAPOK und legt sie festerrno.ENOSYS

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Anforderungen

Routine Erforderlicher Header Optionaler Header
_heapchk <malloc.h> <errno.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

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

Siehe auch

Speicherzuweisung
_heapadd
_heapmin
_heapset
_heapwalk