Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ü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.