_CrtIsValidPointer
Comprueba que un puntero no es NULL. En las versiones de la biblioteca en tiempo de ejecución de C anteriores a Visual Studio 2010, comprueba que un intervalo de memoria especificado es válido para lectura y escritura (solo en la versión de depuración).
Sintaxis
int _CrtIsValidPointer(
const void *address,
unsigned int size,
int access
);
Parámetros
address
Señala al comienzo del intervalo de memoria cuya validez se va a comprobar.
size
Tamaño del intervalo de memoria especificado, en bytes.
access
Accesibilidad de lectura y escritura que se va a determinar para el intervalo de memoria.
Valor devuelto
_CrtIsValidPointer
devuelve TRUE
si el puntero especificado no es NULL. En las versiones de la biblioteca de CRT anteriores a Visual Studio 2010, devuelve TRUE
si el intervalo de memoria es válido para la operación o las operaciones especificadas. De lo contrario, la función devuelve FALSE
.
Comentarios
En la biblioteca de CRT de Visual Studio 2010 y versiones posteriores, los size
parámetros y access
se omiten y _CrtIsValidPointer
solo comprueba que el especificado address
no es null. Dado que esta prueba es fácil de realizar usted mismo, no se recomienda usar esta función. En las versiones anteriores a Visual Studio 2010, la función comprueba que el intervalo de memoria que empieza en address
y se extiende por size
bytes es válido para la o las operaciones de accesibilidad especificadas. Cuando access
se establece TRUE
en , el intervalo de memoria se comprueba tanto para lectura como para escritura. Cuando access
es FALSE
, el intervalo de memoria solo se valida para la lectura. Cuando _DEBUG
no se define, las llamadas a _CrtIsValidPointer
se quitan durante el preprocesamiento.
Dado que esta función devuelve TRUE
o FALSE
, se puede pasar a una de las _ASSERT
macros para crear un mecanismo básico de control de errores de depuración. En el ejemplo siguiente se produce un error de aserción si el intervalo de memoria no es válido para las operaciones de lectura y escritura:
_ASSERTE( _CrtIsValidPointer( address, size, TRUE ) );
Para obtener más información sobre cómo _CrtIsValidPointer
se puede usar con otras funciones y macros de depuración, vea Macros para informes. Para obtener información sobre cómo se asignan, inicializan y administran los bloques de memoria en la versión de depuración del montón base, consulte Detalles del montón de depuración de CRT.
Requisitos
Routine | Encabezado necesario |
---|---|
_CrtIsValidPointer |
<crtdbg.h> |
_CrtIsValidPointer
es una extensión de Microsoft. Para obtener información sobre la compatibilidad, consulte Compatibilidad.
Bibliotecas
Solo versiones de depuración de las bibliotecas en tiempo de ejecución de C.
Ejemplo
Consulte el ejemplo del _CrtIsValidHeapPointer
artículo.