Condividi tramite


Funzioni per la creazione di rapporti sullo stato dello heap

Le informazioni contenute in questo argomento sono valide per:

Edizione

Visual Basic

C#

F#

C++

Web Developer

Express

Argomento non applicabile Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

Pro, Premium e Ultimate

Argomento non applicabile Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

Esistono diverse funzioni che rilevano il contenuto dell'heap di debug in un determinato momento.

_CrtMemState

Per generare uno snapshot di riepilogo dello stato dell'heap in un dato momento, utilizzare la struttura _CrtMemState definita in CRTDBG.H:

typedef struct _CrtMemState
{
    // Pointer to the most recently allocated block:
    struct _CrtMemBlockHeader * pBlockHeader;
    // A counter for each of the 5 types of block:
    size_t lCounts[_MAX_BLOCKS];
    // Total bytes allocated in each block type:
    size_t lSizes[_MAX_BLOCKS];
    // The most bytes allocated at a time up to now:
    size_t lHighWaterCount;
    // The total bytes allocated at present:
    size_t lTotalCount;
} _CrtMemState;

Questa struttura salva un puntatore al primo blocco (quello allocato più di recente) dell'elenco collegato dell'heap di debug. Quindi, registrare in due matrici il numero di blocchi di memoria presenti nell'elenco per ciascun tipo (_NORMAL_BLOCK**_CLIENT_BLOCK**, _FREE_BLOCK e così via), nonché il numero dei byte allocati in ciascun tipo di blocco. Riporta infine il massimo numero di byte allocato come singola entità nello heap fino a tal punto.

Altre funzioni CRT per la creazione di report

Le funzioni elencate di seguito indicano lo stato e il contenuto dell'heap e utilizzano tali informazioni per il rilevamento di perdite di memoria e altri problemi.

Funzione

Descrizione

_CrtMemCheckpoint

Salva uno snapshot dell'heap in una struttura _CrtMemState fornita dall'applicazione.

_CrtMemDifference

Confronta due strutture dello stato della memoria, salva le differenze tra di esse in una terza struttura di stato e restituisce TRUE se i due stati sono differenti.

_CrtMemDumpStatistics

Esegue il dump di una data struttura _CrtMemState. La struttura può contenere uno snapshot dello stato dell'heap di debug in un dato momento o le differenze tra i due snapshot.

_CrtMemDumpAllObjectsSince

Esegue il dump di informazioni su tutti gli oggetti allocati dopo la generazione di un dato snapshot dell'heap o dall'inizio dell'esecuzione. Ogni volta che effettua il dump di un blocco _CLIENT_BLOCK, chiama una funzione hook fornita dall'applicazione, qualora ne sia stata installata una mediante _CrtSetDumpClient.

_CrtDumpMemoryLeaks

Determina se si sono verificate perdite di memoria dall'inizio dell'esecuzione del programma e, in caso positivo, esegue il dump di tutti gli oggetti allocati. Ogni volta che _CrtDumpMemoryLeaks effettua il dump di un blocco _CLIENT_BLOCK, chiama una funzione hook fornita dall'applicazione, se ne è stata installata una mediante _CrtSetDumpClient.

Vedere anche

Altre risorse

Heap di debug CRT