Condividi tramite


_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 requestNumberparametro , filenameo 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 FALSEe 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 .

Vedi anche

Routine di debug