_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 _heapchk
errno
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 _heapchk
wird (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