_CrtIsValidPointer
Verifica se um ponteiro não é nulo. Em versões da biblioteca em tempo de execução C anteriores ao Visual Studio 2010, verifica se um intervalo de memória especificado é válido para leitura e gravação (somente versão de depuração).
Sintaxe
int _CrtIsValidPointer(
const void *address,
unsigned int size,
int access
);
Parâmetros
address
Aponta para o início do intervalo de memória para testar a validade.
size
Tamanho do intervalo de memória especificado (em bytes).
access
Acessibilidade de leitura/gravação para determinar o intervalo de memória.
Valor retornado
_CrtIsValidPointer
Retorna TRUE
se o ponteiro especificado não for nulo. Nas versões da biblioteca CRT anteriores ao Visual Studio 2010, retorna TRUE
se o intervalo de memória for válido para a operação ou operações especificadas. Caso contrário, a função retorna FALSE
.
Comentários
Na biblioteca CRT no Visual Studio 2010 e versões posteriores, os size
parâmetros and access
são ignorados e _CrtIsValidPointer
apenas verificam se o especificado address
não é nulo. Como esse teste é fácil de executar, não recomendamos que você use essa função. Em versões anteriores ao Visual Studio 2010, a função verifica se o intervalo de memória que começa em address
e se estende até size
bytes é válido para as operações de acessibilidade especificadas. Quando access
é definido como TRUE
, o intervalo de memória é verificado para leitura e gravação. Quando access
é FALSE
, o intervalo de memória é validado apenas para leitura. Quando _DEBUG
não está definido, as chamadas para _CrtIsValidPointer
são removidas durante o pré-processamento.
Como essa função retorna TRUE
ou FALSE
, ela pode ser passada para uma das macros para criar um mecanismo básico de tratamento de _ASSERT
erros de depuração. O exemplo a seguir causará uma falha de asserção se o intervalo de memória não for válido para operações de leitura e gravação:
_ASSERTE( _CrtIsValidPointer( address, size, TRUE ) );
Para obter mais informações sobre como _CrtIsValidPointer
pode ser usado com outras funções de depuração e macros, consulte Macros para relatórios. Para obter informações sobre como os blocos de memória são alocados, inicializados e gerenciados na versão de depuração do heap base, consulte Detalhes do heap de depuração do CRT.
Requisitos
Rotina | Cabeçalho necessário |
---|---|
_CrtIsValidPointer |
<crtdbg.h> |
_CrtIsValidPointer
é uma extensão da Microsoft. Para obter informações sobre compatibilidade, consulte Compatibilidade.
Bibliotecas
Somente versões de depuração de bibliotecas de tempo de execução C.
Exemplo
Veja o exemplo do _CrtIsValidHeapPointer
artigo.