Freigeben über


_CrtIsMemoryBlock

Überprüft, ob ein angegebener Speicherblock im lokalen Heap ist und dass er einen Bezeichner des Debugheaps gültigen Blocktyp (nur Debugversion) verfügt.

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

Parameter

  • [in] userData
    Zeiger auf den Anfang des zu überprüfenden Speicherblocks.

  • [in] size
    Größe des angegebenen Blocks (in Byte).

  • [out] requestNumber
    Zeiger auf die Belegungsnummer des Blocks oder eines NULL.

  • [out] filename
    Ein Zeiger auf den Namen der Quelldatei, die den Block oder NULLangefordert hat.

  • [out] linenumber
    Zeiger auf die Zeilennummer in der Quelldatei oder in NULL.

Rückgabewert

_CrtIsMemoryBlock gibt TRUEzurück, wenn der angegebene Speicherblock im lokalen Heap befindet und einen Bezeichner des Debugheaps gültigen Blocktyp verfügt. andernfalls gibt die Funktion FALSEzurück.

Hinweise

Die _CrtIsMemoryBlock-Funktion überprüft, ob ein angegebener Speicherblock im lokalen Heap der Anwendung befindet und dass er einen gültigen Blocktyp Bezeichner verfügt.Dieses Feature kann auch verwendet werden, um das Objekt zu erhalten zuordnungs bestellnummer und der Quelldateiname und die Zeilennummer, in der die Zuordnung Speicherblock ursprünglich angefordert wurde.Übergeben requestNumberWert ungleich null für filenamedebuggen, oder linenumber-Parameter ursachen _CrtIsMemoryBlock , um diese Parameter an den Werten im Speicherblock Header festzulegen, wenn er den Block im lokalen Heap gesucht werden soll.Wenn _DEBUG nicht definiert wird, werden Aufrufe _CrtIsMemoryBlock während des Präprozessorlaufs entfernt.

Wenn _CrtIsMemoryBlock fehlschlägt, gibt es zurück FALSE und Ausgabeparameter werden mit den Standardwerten initialisiert: requestNumber und lineNumber werden auf 0 festgelegt und filename wird auf NULLfestgelegt.

Da diese Funktion TRUE oder FALSEzurückgibt, kann sie auf eines der _ASSERT Makros übergeben werden, um einen einfachen Mechanismus zur fehlerbehandlungs Debuggen zu erstellen.Das folgende Beispiel führt zu einem Assertionsfehler, wenn die angegebene Adresse sich nicht im lokalen Heap befindet:

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

Weitere Informationen zum Debuggen mit anderen _CrtIsMemoryBlock-Funktionen und Makros verwendet werden kann, finden Sie unter Verwenden von Makros zum Überprüfen und Berichterstellung.Weitere Informationen zum Speicherblöcke in der Debugversion des Basisheaps zugeordnet, initialisiert und verwaltet werden, finden Sie unter Speicherverwaltung und Debugheap.

Anforderungen

Routine

Erforderlicher Header

_CrtIsMemoryBlock

<crtdbg.h>

Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.

Bibliotheken

Debugversionen von nur C .

Beispiel

Weitere Informationen finden Sie im Beispiel zum _CrtIsValidHeapPointer Thema.

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Siehe auch

Referenz

Debug- Routinen