Структура CMemoryState

Обеспечивает удобный способ обнаружения утечек памяти в программе.

struct CMemoryState

Члены

0wzsd007.collapse_all(ru-ru,VS.110).gifОткрытые конструкторы

Имя

Описание

CMemoryState::CMemoryState

Создает a класс- как структура контрольные точки этой памяти элементов управления.

0wzsd007.collapse_all(ru-ru,VS.110).gifОткрытые методы

Имя

Описание

CMemoryState::Checkpoint

Возвращает моментальный снимок (контрольную точку) текущего состояния памяти.

CMemoryState::Difference

Вычисляет разницу между объектами типа CMemoryState2.

CMemoryState::DumpAllObjectsSince

Создает дамп сводку всех выбранных объектов с предыдущей контрольной точки.

CMemoryState::DumpStatistics

Статистика операций выделения памяти печатей для объекта CMemoryState.

Заметки

CMemoryState структура и не имеет базовый класс.

"Утечку памяти" возникает, когда память для объекта выделена в куче, но не освобождаются, когда он больше не нужен.Такие утечек памяти, наконец, могут привести к ошибкам переполнения памяти.Существует несколько способов выделения и отмены выделения памяти в программе.

  • Использование семейство malloc/свободно;бесплатно;бесплатные функции из библиотеки времени выполнения.

  • Использование функции управления памятью API Windows, LocalAlloc/LocalFree и GlobalAlloc/GlobalFree.

  • Использование C++ новый и операторы удалить.

Справка диагностики CMemoryState только обнаруживает, вызванные утечек памяти, когда память, выделенная с помощью оператора новый освобождена с помощью удалить.Остальные 2 группы в составе функции управления памятью для программ non-C++ и не рекомендуется новый и объединяет их с удалить в одной программе.Этот дополнительный, что заменяет макрос, DEBUG_NEW, оператор новый, когда требуется отслеживание выделений памяти файла и номера линии.DEBUG_NEW обычно используется в том случае, если используется оператор новый.

Как и в случае с другими диагностиками устранение неполадок CMemoryState, доступны только внутри отладочные версии программы.Отладочная версия должна иметь _DEBUG указанную константу.

Если есть, то программа имеет утечку памяти, можно использовать Checkpoint, Разница и функции DumpStatistics, чтобы обнаружить разницу между состояниями памяти (выделенными объектами) на 2 различных этапов выполнения программы.Эти сведения могут оказаться полезными в определение, является ли функция очистки очищает все объекты она выделяет.

Если просто знать, где должна быть вычислена разница в распространении и освобождение происходит не предоставляет достаточно сведений, можно использовать функцию DumpAllObjectsSince чтобы сбросить все объекты, выбранные с момента предыдущего вызова Checkpoint.Этот дамп указывает порядок распределения исходного файла и линии, где был выбрать объект (если используется DEBUG_NEW для распространения) и вывода объекта, его адрес и его размера.DumpAllObjectsSince также вызывает функцию Dump каждого объекта для предоставления сведений о текущем состоянии.

Дополнительные сведения об использовании CMemoryState, а другой для устранения неполадок см. в разделе Отладка приложений MFC.

ПримечаниеПримечание

Объявления объектов типа CMemoryState и вызовов функции-членам должны быть отысканы вилку рекомендации #if defined(_DEBUG)/#endif .В результате диагностики памяти быть включено только в построениях отладки программы.

Иерархия наследования

CMemoryState

Требования

Header: afx.h

См. также

Ссылки

Диаграмма иерархии