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 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.