_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 _heapseterrno 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 _heapsetwird (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

Siehe auch

Speicherzuweisung
_heapadd
_heapchk
_heapmin
_heapwalk