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