Partager via


_CrtIsValidPointer

Vérifie qu’un pointeur n’est pas null. Dans les versions de la bibliothèque Runtime C antérieures à Visual Studio 2010, vérifie qu'une plage mémoire spécifiée est valide pour la lecture et l'écriture (version de débogage uniquement).

Syntaxe

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

Paramètres

address
Pointe vers le début de la plage mémoire dont la validité doit être testée.

size
Taille de la plage mémoire spécifiée (en octets).

access
Accessibilité en lecture/écriture à déterminer pour la plage mémoire.

Valeur retournée

_CrtIsValidPointer retourne TRUE si le pointeur spécifié n’est pas null. Dans les versions de bibliothèque CRT avant Visual Studio 2010, retourne TRUE si la plage de mémoire est valide pour l’opération ou les opérations spécifiées. Sinon, la fonction retourne FALSE.

Notes

Dans la bibliothèque CRT dans Visual Studio 2010 et versions ultérieures, les paramètres et access les size paramètres sont ignorés, et _CrtIsValidPointer vérifie uniquement que le paramètre spécifié address n’est pas null. Étant donné que ce test est facile à effectuer vous-même, nous vous déconseillons d’utiliser cette fonction. Dans les versions antérieures à Visual Studio 2010, la fonction vérifie que la plage mémoire débutant à address et s'étendant pour des octets size est valide pour la ou les opérations d'accessibilité spécifiées. Quand access la valeur est définie TRUE, la plage de mémoire est vérifiée pour la lecture et l’écriture. Quand access c’est FALSEle cas, la plage de mémoire est validée uniquement pour la lecture. Quand _DEBUG n’est pas défini, les appels à _CrtIsValidPointer sont supprimés lors du prétraitement.

Étant donné que cette fonction retourne TRUE ou FALSE, elle peut être passée à l’une _ASSERT des macros pour créer un mécanisme de gestion des erreurs de débogage de base. L’exemple suivant provoque un échec d’assertion si la plage de mémoire n’est pas valide pour les opérations de lecture et d’écriture :

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

Pour plus d’informations sur _CrtIsValidPointer l’utilisation d’autres fonctions et macros de débogage, consultez Macros pour la création de rapports. Pour plus d’informations sur la façon dont les blocs de mémoire sont alloués, initialisés et gérés dans la version de débogage du tas de base, consultez les détails du tas de débogage CRT.

Spécifications

Routine En-tête requis
_CrtIsValidPointer <crtdbg.h>

_CrtIsValidPointer est une extension Microsoft. Pour plus d’informations sur la compatibilité, consultez Compatibilité.

Bibliothèques

Uniquement les versions de débogage des bibliothèques Runtime C.

Exemple

Consultez l’exemple de l’article _CrtIsValidHeapPointer .

Voir aussi

Routines de débogage