Структура CMemoryState
Обеспечивает удобный способ обнаружения утечек памяти в программе.
struct CMemoryState
Члены
Открытые конструкторы
Имя |
Описание |
---|---|
Создает a класс- как структура контрольные точки этой памяти элементов управления. |
Открытые методы
Имя |
Описание |
---|---|
Возвращает моментальный снимок (контрольную точку) текущего состояния памяти. |
|
Вычисляет разницу между объектами типа CMemoryState2. |
|
Создает дамп сводку всех выбранных объектов с предыдущей контрольной точки. |
|
Статистика операций выделения памяти печатей для объекта 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