_CrtIsMemoryBlock
Verifica che un blocco di memoria specificato sia nell'heap locale con un identificatore a blocchi dello heap di debug valida (versione di debug solo).
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *linenumber
);
Parametri
[in] userData
Puntatore all'inizio del blocco di memoria da verificare.[in] size
Dimensioni del blocco specificato (in byte).[out] requestNumber
Puntatore al numero di allocazione di 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 NULL.
Valore restituito
_CrtIsMemoryBlock restituisce TRUEse 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.
Note
_CrtIsMemoryBlock la funzione verifica che un blocco di memoria specificato sia situato nell'heap locale dell'applicazione con un identificatore a blocchi valido.Questa funzione può anche essere utilizzata per ottenere il numero ordine di allocazione dell'oggetto e il nome file di origine/numero di riga in cui l'allocazione di blocco di memoria a cui è stata richiesta.passare i valori non Null per requestNumber, filename, o linenumber cause di parametri _CrtIsMemoryBlock per impostare questi parametri ai valori nell'intestazione di debug del blocco di memoria, se trova il blocco dell'heap locale.quando _DEBUG non è definito, le chiamate a _CrtIsMemoryBlock vengono ignorati durante la pre-elaborazione.
se _CrtIsMemoryBlock ha esito negativo, restituisce FALSE i parametri di output vengono inizializzati i valori predefiniti: requestNumber e lineNumber è impostato su 0 e filename è impostato su NULL.
Poiché la funzione restituisce TRUE o FALSE, può essere passata a uno di _ASSERT macro 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 all'interno dell'heap locale:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
per ulteriori informazioni su come _CrtIsMemoryBlock può essere utilizzato con altre funzioni di debug e le macro, vedere Utilizzando le macro per la verifica e la creazione di rapporti.Per informazioni su come i blocchi di memoria vengono allocati, inizializzati e vengono gestiti nella versione di debug dell'heap di base, vedere Gestione della memoria e heap di debug.
Requisiti
routine |
Intestazione di associazione |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.
Librerie
versioni di debug di Librerie di runtime del linguaggio C solo.
Esempio
Vedere l'esempio relativo a _CrtIsValidHeapPointer argomento.
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.