Freigeben über


_CrtIsValidPointer

Überprüft, ob ein Zeiger nicht null ist. Überprüft in älteren Versionen der C-Laufzeitbibliothek als Visual Studio 2010, ob ein angegebener Speicherbereich für Lese- und Schreibvorgänge gültig ist (nur Debugversion).

Syntax

int _CrtIsValidPointer(
   const void *address,
   unsigned int size,
   int access
);

Parameter

address
Weist auf den Anfang des Speicherbereichs zum Prüfen der Gültigkeit.

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

access
Für den Speicherbereich zu bestimmende Lese/Schreib-Barrierefreiheit.

Rückgabewert

_CrtIsValidPointer gibt zurück TRUE , wenn der angegebene Zeiger nicht NULL ist. Gibt in CRT-Bibliotheksversionen vor Visual Studio 2010 zurück TRUE , ob der Speicherbereich für den angegebenen Vorgang oder die angegebenen Vorgänge gültig ist. Andernfalls wird von der Funktion FALSE zurückgegeben.

Hinweise

In der CRT-Bibliothek in Visual Studio 2010 und höheren Versionen werden die und access die size Parameter ignoriert und _CrtIsValidPointer nur überprüft, ob der angegebene address Wert nicht null ist. Da dieser Test leicht zu erledigen ist, wird die Verwendung dieser Funktion nicht empfohlen. Die Funktion überprüft in älteren Versionen als Visual Studio 2010, ob der Speicherbereich, der bei size beginnt und für address Bytes erweitert wird, für die angegebenen Barrierefreiheitsvorgänge gültig ist. Wenn access dieser Wert auf TRUE festgelegt ist, wird der Speicherbereich sowohl für das Lesen als auch für das Schreiben überprüft. Ist access dies FALSEder Wert, wird der Speicherbereich nur zum Lesen überprüft. Wenn _DEBUG nicht definiert ist, werden Aufrufe von _CrtIsValidPointer während der Vorverarbeitung entfernt.

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 der Speicherbereich für Lese- und Schreibvorgänge nicht gültig ist:

_ASSERTE( _CrtIsValidPointer( address, size, TRUE ) );

Weitere Informationen zur _CrtIsValidPointer 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
_CrtIsValidPointer <crtdbg.h>

_CrtIsValidPointer ist eine Microsoft-Erweiterung. 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