_CrtIsMemoryBlock
Verifica che un blocco di memoria specificato sia nell'heap locale e che abbia un identificatore di tipo blocco dell'heap di debug valido (solo versione di debug).
Sintassi
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *lineNumber
);
Parametri
userData
Puntatore all'inizio di un blocco di memoria da verificare.
size
Dimensione in byte del blocco specificato.
requestNumber
Puntatore al numero di allocazione del blocco o NULL
.
filename
Puntatore al nome del file di origine che ha richiesto il blocco o NULL
.
lineNumber
Puntatore al numero di riga nel file di origine o NULL
.
Valore restituito
_CrtIsMemoryBlock
restituisce TRUE
se il blocco di memoria specificato si trova all'interno dell'heap locale e ha un identificatore di tipo blocco dell'heap per il debug valido; in caso contrario, la funzione restituisce FALSE
.
Osservazioni:
La funzione _CrtIsMemoryBlock
verifica che un blocco di memoria specificato sia incluso nell'heap locale dell'applicazione e che abbia un identificatore di tipo blocco valido. Questa funzione può essere usata anche per ottenere il numero di ordine di allocazione di oggetti e il numero di riga/nome file di origine in cui era stata richiesta l'allocazione del blocco di memoria. Un valore nonNULL
passato in un requestNumber
parametro , filename
o lineNumber
determina _CrtIsMemoryBlock
l'impostazione del parametro sul valore nell'intestazione di debug del blocco di memoria, se trova il blocco nell'heap locale. Quando _DEBUG
non è definito, le chiamate a _CrtIsMemoryBlock
vengono rimosse durante la pre-elaborazione.
Se _CrtIsMemoryBlock
ha esito negativo, restituisce FALSE
e i parametri di output vengono inizializzati sui valori predefiniti: requestNumber
e sono impostati su 0 e filename
lineNumber
sono impostati su NULL
.
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'indirizzo specificato non si trova all'interno dell'heap locale:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
Per altre informazioni su come _CrtIsMemoryBlock
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 |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Librerie
Solo le versioni di debug delle librerie di runtime di C.
Esempio
Vedere l'esempio per l'articolo _CrtIsValidHeapPointer
.