_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 FALSE
der 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.