_CrtIsMemoryBlock

Überprüft, ob sich ein angegebener Speicherblock im lokalen Heap befindet und ob er einen gültigen Debugheap-Blocktypbezeichner hat (nur Debugversion).

Syntax

int _CrtIsMemoryBlock(
   const void *userData,
   unsigned int size,
   long *requestNumber,
   char **filename,
   int *lineNumber
);

Parameter

userData
Zeiger auf den Anfang des zu überprüfenden Speicherblocks.

size
Größe des angegebenen Blocks (in Bytes).

requestNumber
Zeiger zur Belegungsnummer des Blocks oder NULL.

filename
Zeiger zum Namen der Quelldatei, der den Block angefordert hat, oder NULL.

lineNumber
Zeiger zur Zeilennummer in der Quelldatei oder NULL.

Rückgabewert

_CrtIsMemoryBlock gibt TRUE zurück, wenn sich der angegebene Speicherblock im lokalen Heap befindet und über einen gültigen Debugheap-Blocktypbezeichner verfügt. Andernfalls gibt die Funktion FALSE zurück.

Hinweise

Die _CrtIsMemoryBlock-Funktion überprüft, ob sich ein angegebener Speicherblock im lokalen Heap der Anwendung befindet und ob sie einen gültigen Blocktypbezeichner hat. Diese Funktion kann auch verwendet werden, um die Bestellnummer der Objektzuordnung und den Quelldateinamen/die Zeilennummer abzurufen, wo die Speicherblockbelegung ursprünglich angefordert wurde. Ein nicht in einem requestNumber, filenameoder lineNumber parameter übergebener WertNULL bewirkt_CrtIsMemoryBlock, dass der Parameter auf den Wert im Debugheader des Speicherblocks festgelegt wird, wenn er den Block im lokalen Heap findet. Wenn _DEBUG nicht definiert ist, werden Aufrufe von _CrtIsMemoryBlock während der Vorverarbeitung entfernt.

Wenn _CrtIsMemoryBlock ein Fehler auftritt, wird sie zurückgegeben FALSE, und die Ausgabeparameter werden auf Standardwerte initialisiert: requestNumber und lineNumber werden auf 0 festgelegt und filename auf NULL.

Da diese Funktion zurückgibt TRUE oder FALSE, kann sie an eines der _ASSERT Makros übergeben werden, um einen grundlegenden Fehlerbehandlungsmechanismus für das Debuggen zu erstellen. Im folgenden Beispiel wird ein Assertionsfehler verursacht, wenn sich die angegebene Adresse nicht innerhalb des lokalen Heaps befindet:

_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
          &filename, &linenumber ) );

Weitere Informationen zur _CrtIsMemoryBlock Verwendung mit anderen Debugfunktionen und Makros finden Sie unter "Makros für die Berichterstellung". Informationen dazu, wie Speicherblöcke in der Debugversion des Basis heap zugeordnet, initialisiert und verwaltet werden, finden Sie unter CRT Debug Heap Details.

Anforderungen

Routine Erforderlicher Header
_CrtIsMemoryBlock <crtdbg.h>

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

Libraries

Nur Debugversionen von C-Laufzeitbibliotheken

Beispiel

Weitere Informationen finden Sie im Beispiel für den _CrtIsValidHeapPointer Artikel.

Siehe auch

Debugroutinen