Поделиться через


Отслеживание вызовов памяти

Обновлен: Ноябрь 2007

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

Выпуск

Visual Basic

C#

C++

Web Developer

Экспресс-выпуск

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

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

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

Standard

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

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

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

Pro и Team

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

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

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

Обозначения:

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

Применяется

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

Неприменимо

Тема применяется, но команда по умолчанию сокрыта

Команда или команды скрытые по умолчанию.

В MFC вместо оператора new для обнаружения утечек памяти можно применять макрос DEBUG_NEW. В отладочной версии программы DEBUG_NEW отслеживает имя файла и номер строки для каждого объекта, которому выделяется память. При компиляции окончательной версии программы DEBUG_NEW становится простой операцией new без данных об имени файла и номере строки. Таким образом, окончательная версия программы выполняется с необходимой скоростью.

Чтобы не переписывать программу, используя DEBUG_NEW вместо new, можно в исходных файлах определить данный макрос:

#define new DEBUG_NEW

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

В отладочной версии структуры MFC макрос DEBUG_NEW используется автоматически, но в коде, разумеется, нет. Если же требуется воспользоваться преимуществами DEBUG_NEW, то нужно явно указать DEBUG_NEW или #define new, как показано выше.

См. также

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

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