Compartir a través de


_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 TRUEen , 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.

Consulte también

Rutinas de depuración