_heapset
Überprüft Heaps auf minimale Konsistenz und legt für die freien Einträge einen angegebenen Wert fest.
Wichtig
Diese Funktion ist veraltet. Von Visual Studio 2015 an ist sie nicht in der CRT verfügbar.
Syntax
int _heapset(
unsigned int fill
);
Parameter
fill
Füllzeichen.
Rückgabewert
_heapset
gibt eine der folgenden ganzzahligen Manifestkonstanten zurück, die in Malloc.h definiert sind.
Wert | Beschreibung |
---|---|
_HEAPBADBEGIN |
Ursprüngliche Headerinformationen ungültig oder nicht gefunden. |
_HEAPBADNODE |
Heap beschädigt oder ungültiger Knoten gefunden. |
_HEAPEMPTY |
Heap wurde nicht initialisiert. |
_HEAPOK |
Der Heap scheint konsistent zu sein. |
Wenn ein Fehler auftritt, setzt _heapset
errno
zudem auf ENOSYS
.
Hinweise
Die Funktion _heapset
zeigt freie Speicherpositionen oder Knoten an, die unabsichtlich überschrieben wurden.
_heapset
überprüft auf minimale Konsistenz auf dem Heap und legt dann jedes Byte der als frei eingetragenen Heappositionen auf den Wert von fill
fest. Dieser bekannte Wert zeigt, welche Arbeitsspeicherpositionen des Heaps freie Knoten enthalten und welche Daten enthalten, die unabsichtlich an freigegebene Speicherpositionen geschrieben wurden. Wenn das Betriebssystem nicht unterstützt _heapset
wird (z. B. Windows 98), gibt die Funktion zurück _HEAPOK
und legt sie festerrno
.ENOSYS
Anforderungen
Routine | Erforderlicher Header | Optionaler Header |
---|---|---|
_heapset |
<malloc.h> | <errno.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.
Beispiel
// crt_heapset.c
// This program checks the heap and
// fills in free entries with the character 'Z'.
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int heapstatus;
char *buffer;
if( (buffer = malloc( 1 )) == NULL ) // Make sure heap is
exit( 0 ); // initialized
heapstatus = _heapset( 'Z' ); // Fill in free entries
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;
}
free( buffer );
}
OK - heap is fine