Dumping Memory Statistics
The CMemoryState member function Difference determines the difference between two memory-state objects. It detects any objects that were not deallocated from the heap between the beginning and end memory-state snapshots.
To dump memory statistics
- The following example (continuing the example from the previous topic) shows how to call DumpStatistics to get information about the objects that have not been deallocated:
if( diffMemState.Difference( oldMemState, newMemState ) )
{
TRACE( "Memory leaked!\n" );
diffMemState.DumpStatistics();
}
A sample dump from the example above is shown here:
0 bytes in 0 Free Blocks
22 bytes in 1 Object Blocks
45 bytes in 4 Non-Object Blocks
Largest number used: 67 bytes
Total allocations: 67 bytes
- The first line describes the number of blocks whose deallocation was delayed if afxMemDF was set to delayFreeMemDF. For a description of afxMemDF, see the procedure “To select specific memory diagnostic features with afxMemDF” presented under Memory Diagnostics.
- The second line describes how many objects remain allocated on the heap.
- The third line describes how many nonobject blocks (arrays or structures allocated with new) were allocated on the heap and not deallocated.
- The fourth line gives the maximum memory used by your program at any one time.
- The last line lists the total amount of memory used by your program.
For more information, see Dumping All Objects, Tracking Memory Allocations, AfxEnableMemoryTracking, and CMemoryState.