Condividi tramite


_CrtIsValidPointer

Verifica che un puntatore non sia Null. Nelle versioni della libreria di runtime del linguaggio C precedenti a Visual Studio 2010, verifica che l'intervallo di memoria specificato sia valido per lettura e scrittura (solo versione di debug).

Sintassi

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

Parametri

address
Punta all'inizio dell'intervallo di memoria per il test della validità.

size
Dimensione dell'intervallo di memoria specificato (in byte).

access
Accessibilità in lettura/scrittura da determinare per l'intervallo di memoria.

Valore restituito

_CrtIsValidPointer restituisce TRUE se il puntatore specificato non è Null. Nelle versioni della libreria CRT precedenti a Visual Studio 2010 restituisce TRUE se l'intervallo di memoria è valido per l'operazione o le operazioni specificate. In caso contrario, la funzione restituisce FALSE.

Osservazioni:

Nella libreria CRT in Visual Studio 2010 e versioni successive i size parametri e access vengono ignorati e _CrtIsValidPointer verifica solo che l'oggetto specificato address non sia Null. Poiché questo test è facile da eseguire manualmente, non è consigliabile usare questa funzione. Nelle versioni precedenti a Visual Studio 2010, la funzione verifica che l'intervallo di memoria che inizia in address e si estende per size byte sia valido per l'operazione o per le operazioni di accessibilità specificate. Quando access è impostato su TRUE, l'intervallo di memoria viene verificato sia per la lettura che per la scrittura. Quando access è FALSE, l'intervallo di memoria viene convalidato solo per la lettura. Quando _DEBUG non è definito, le chiamate a _CrtIsValidPointer vengono rimosse durante la pre-elaborazione.

Poiché questa funzione restituisce TRUE o FALSE, può essere passata a una delle _ASSERT macro per creare un meccanismo di base di gestione degli errori di debug. Nell'esempio seguente viene generato un errore di asserzione se l'intervallo di memoria non è valido per le operazioni di lettura e scrittura:

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

Per altre informazioni su come _CrtIsValidPointer usare con altre funzioni di debug e macro, vedere Macro per la creazione di report. Per informazioni sulla modalità di allocazione, inizializzazione e gestione dei blocchi di memoria nella versione di debug dell'heap di base, vedere Dettagli dell'heap di debug CRT.

Requisiti

Ciclo Intestazione obbligatoria
_CrtIsValidPointer <crtdbg.h>

_CrtIsValidPointer è un'estensione Microsoft. Per informazioni sulla compatibilità, vedere Compatibilità.

Librerie

Solo le versioni di debug delle librerie di runtime di C.

Esempio

Vedere l'esempio per l'articolo _CrtIsValidHeapPointer .

Vedi anche

Routine di debug