Просмотр статистики памяти

Этот раздел применим к:

Выпуск

Visual Basic

C#

F#

C++

Web Developer

Express

Тема не применяется Тема не применяется Тема не применяется

Только машинные коды

Тема не применяется

Pro, Premium и Ultimate

Тема не применяется Тема не применяется Тема не применяется

Только машинные коды

Тема не применяется

Функция CMemoryState::Difference просматривает два объекта-состояния памяти и определяет, какие объекты не были освобождены из кучи между начальным и конечным состоянием. После того как сделаны Практическое руководство. Получение снимков памяти и с помощью CMemoryState::Difference, произведено их сравнение, можно вызвать CMemoryState::DumpStatistics и получить сведения о неосвобожденных объектах.

Рассмотрим следующий пример.

if( diffMemState.Difference( oldMemState, newMemState ) )
{
   TRACE( "Memory leaked!\n" );
   diffMemState.DumpStatistics();
}

Образец дампа из примера выглядит следующим образом:

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

Свободные блоки — это блоки, освобождение которых задерживается, если afxMemDF была установлена в delayFreeMemDF. Дополнительные сведения см. в разделе Практическое руководство. Включение и отключение диагностики памяти.

Обычные блоки объектов, показанные во второй строке, остаются выделенными в куче.

Блоки без объектов включают в себя массивы и структуры, созданные с помощью new. В этом случае четыре блока без объектов были созданы в куче, но не освобождены.

Largest number used показывает наибольшее количество памяти, используемой программой в любое время.

Total allocations показывает общее количество памяти, используемой программой.

См. также

Задачи

Практическое руководство. Получение снимков памяти

Ссылки

CMemoryState Structure

Другие ресурсы

Обнаружение утечек памяти в MFC

Diagnostic Services