_CrtIsMemoryBlock
Verifica che un blocco di memoria specificato sia nell'heap locale con un identificatore valido del tipo di blocco dell'heap di debug (solo versione di debug).
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *linenumber
);
[in] userData
Puntatore all'inizio del blocco di memoria da verificare.[in] size
Dimensione del blocco specificato (in byte).[out] requestNumber
Puntatore al numero di allocazione del blocco o NULL.[out] filename
Puntatore al nome del file di origine che ha richiesto il blocco o NULL.[out] linenumber
Puntatore al numero di riga nel file di origine o in NULL.
_CrtIsMemoryBlock restituisce TRUE se il blocco di memoria specificato si trova all'interno dell'heap locale e presenta un identificatore valido del tipo di blocco dell'heap di debug; in caso contrario, la funzione restituisce FALSE.
La funzione _CrtIsMemoryBlock verifica che un blocco di memoria specificato sia presente nell'heap locale dell'applicazione con un identificatore valido a blocchi. Questa funzione può essere utilizzata per ottenere il numero di ordini di allocazione di oggetti, il nome del file di origine e il numero di riga in cui è stata richiesta l'allocazione del blocco di memoria. Il passaggio di valori non NULL per requestNumber, filename, o per parametri linenumber permette a _CrtIsMemoryBlock di impostare questi parametri ai valori nell'header di debug del blocco di memoria, se trova il blocco dell'heap locale. Quando _DEBUG non è definito, le chiamate a _CrtIsMemoryBlock vengono rimosse durante la pre-elaborazione.
Se _CrtIsMemoryBlock fallisce, restituisce FALSE e i parametri di output vengono inizializzati ai valori predefiniti: requestNumber e lineNumber vengono impostate su 0 e filename su NULL.
Poiché la funzione restituisce TRUE o FALSE, può essere passata a una delle macro _ASSERT per creare un semplice meccanismo di gestione degli errori di debug. L'esempio seguente genera un errore di asserzione se l'indirizzo specificato non si trova nell'heap locale:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
Per ulteriori informazioni su come _CrtIsMemoryBlock può essere utilizzato da altre funzioni e macro di debug, consultare Macro per la creazione di rapporti. Per informazioni su come i blocchi di memoria allocati, vengono inizializzati e vengono gestiti nella versione di debug dell'heap di base, vedere Informazioni dettagliate sull'heap di debug CRT.
Routine |
Intestazione obbligatoria |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
Solo versioni di debug di Librerie di runtime C.
Consultare l'esempio per l'argomento _CrtIsValidHeapPointer.
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.