_heapchk
Spustí kontroly konzistence v haldě.
Syntaxe
int _heapchk( void );
Vrácená hodnota
_heapchk
vrátí jednu z následujících celočíselné konstanty manifestu definované v Malloc.h.
Vrácená hodnota | Podmínka |
---|---|
_HEAPBADBEGIN |
Počáteční informace v hlavičce jsou chybné nebo se nedají najít. |
_HEAPBADNODE |
Byl nalezen chybný uzel nebo je poškozena halda. |
_HEAPBADPTR |
Ukazatel na haldu není platný. |
_HEAPEMPTY |
Halda nebyla inicializována. |
_HEAPOK |
Halda je zřejmě konzistentní. |
Kromě toho, pokud dojde k chybě, _heapchk
nastaví errno
na ENOSYS
.
Poznámky
Funkce _heapchk
pomáhá ladit problémy související s haldou tím, že kontroluje minimální konzistenci haldy. Pokud operační systém nepodporuje _heapchk
(například Windows 98), funkce se vrátí _HEAPOK
a nastaví errno
na ENOSYS
hodnotu .
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
Rutina | Požadovaný hlavičkový soubor | Volitelné záhlaví |
---|---|---|
_heapchk |
<malloc.h> | <errno.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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