Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 .