Отслеживание вызовов памяти
Обновлен: Ноябрь 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, как показано выше.