CMemoryState

CMemoryState non dispone di una classe base.

CMemoryState fornisce un modo comodo per rilevare le perdite di memoria nel vostro programma. Una "perdita di memoria" si verifica quando la memoria per un oggetto è allocata nell'heap, ma non deallocato quando non è più necessaria. Tali perdite di memoria alla fine possono portare ad errori di memoria esaurita. Ci sono diversi modi per allocare e deallocare la memoria nel vostro programma:

La diagnostica CMemoryState solo aiuta a rilevare le perdite di memoria causate quando la memoria allocata utilizzando l'operatore new non viene deallocato utilizzando eliminare. Gli altri due gruppi di funzioni di gestione della memoria per i programmi non C++ e mescolandoli con il nuovo e non è consigliabile eliminare nello stesso programma. Una macro supplementare, DEBUG_NEW, viene fornita per sostituire l'operatore new quando hai bisogno di file e il numero di riga tracking delle allocazioni di memoria. DEBUG_NEW viene utilizzata ogni volta che si sarebbe normalmente utilizza l'operatore new.

Come con altri diagnostica, la diagnostica CMemoryState è solo disponibile in versioni di debug del vostro programma. Una versione di debug deve avere la costante debug definita.

Se si sospetta che il programma ha una perdita di memoria, è possibile utilizzare le funzioni di Checkpoint, differenzae DumpStatistics per scoprire la differenza tra lo stato di memoria (gli oggetti allocati) in due diversi punti l'esecuzione del programma. Questa informazione può essere utile per determinare se una funzione è ripulire tutti gli oggetti che alloca.

Se semplicemente sapendo dove avviene lo squilibrio nell'allocazione e deallocazione non fornisce informazioni sufficienti, è possibile utilizzare la funzione DumpAllObjectsSince per eseguire il dump tutti gli oggetti allocati dal chiamata precedente a Checkpoint. Questa discarica mostra l'ordine di assegnazione, il file di origine e la linea dove l'oggetto è stato allocato (se si utilizza DEBUG_NEW per assegnazione) e la derivazione delle sue dimensioni, l'indirizzo e l'oggetto. DumpAllObjectsSince chiama anche la funzione di ciascun oggetto di Dump per fornire informazioni sul suo stato attuale.

Per ulteriori informazioni su come utilizzare CMemoryState e altri diagnostica, vedere Supporto di debug MFC nel manuale del programmatore di Visual C++.

&Notanbsp;  Dichiarazioni di oggetti di tipo CMemoryState e chiamate a funzioni membro dovrebbero essere racchiuse #if defined(_DEBUG)/#endif direttive. Questo fa sì che diagnostica memoria da includere solo nelle compilazioni del vostro programma di debug.

Membri della classeGerarchia Chart

Index