Condividi tramite


_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.

Vedere anche

Riferimenti

Procedura di debug