Memory Statistic Viewing
This topic applies to:
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
Native only |
||||
Pro, Premium, and Ultimate |
Native only |
The CMemoryState::Difference function looks at two memory-state objects and detects any objects not deallocated from the heap between the beginning and end states. After you have How to: Take Memory Snapshots and compared them using CMemoryState::Difference, you can call CMemoryState::DumpStatistics to get information about the objects that have not been deallocated.
Consider the following example:
if( diffMemState.Difference( oldMemState, newMemState ) )
{
TRACE( "Memory leaked!\n" );
diffMemState.DumpStatistics();
}
A sample dump from the example looks like this:
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
Free blocks are blocks whose deallocation is delayed if afxMemDF was set to delayFreeMemDF. For more information, see How to: Enable Memory Diagnostics.
Ordinary object blocks, shown on the second line, remain allocated on the heap.
Non-object blocks include arrays and structures allocated with new. In this case, four non-object blocks were allocated on the heap but not deallocated.
Largest number used gives the maximum memory used by the program at any time.
Total allocations gives the total amount of memory used by the program.