Visual С++ - обнаружение утечки памяти

Любые предложения? Это сообщение SO сообщает о Visual Leak Detector, но я ищу другие инструменты. Кроме того, не рекомендуется this.

Ответ 1

Я использовал Visual Leak Detector совсем недавно, и он работает очень хорошо. Его очень просто собрать (просто включить vld.h) и не требует никаких инструментов. Я обнаружил, что мне нужно написать пару скриптов, но для анализа вывода в нечто более полезное для моих целей (это крик для достойного графического интерфейса). Обратите внимание на новый сайт - проект активно поддерживается на Codeplex - ссылка Codeproject очень старая.

Ответ 2

Попробуйте Deleaker или DevPartner, они оба достаточно хороши.

обновление:

С++ Memory Validator работает отлично и справедливо оценивается.

Ответ 3

Если вы можете позволить себе некоторые деньги, используйте Intel Parallel Inspector (http://software.intel.com/en-us/intel-parallel-inspector).

Он не требует каких-либо модификаций кода и предоставляет хорошие отчеты.

Мне пришлось искать хорошие инструменты, чтобы сделать это в работе, и что лучший инструмент (безусловно), который я нашел.

Ответ 4

Как предложил Ной Робертс, я тоже почувствовал, что Memory validator является лучшим инструментом для обнаружения утечек в Visual Studio.

Очистка также работает.

Ответ 5

Недавно был задан аналогичный вопрос, но связанный с 2010 годом: Профилирование/обнаружение VS2010

Если вы не используете 2010, вы можете рассмотреть AQtime. Это не слишком страшно в самое время. Бывают моменты, когда не удается найти объект, связанный с утечкой, и просто говорит "crt memory" или что-то еще.

Другой, который я недавно попробовал, называется "Memory Validator". Не совсем хороший интерфейс, но он, похоже, работает, и работает с 2010 года (просто нет никакого другого профилирования в нем, чего я ожидаю в таком коммерческом инструменте).

Возможно, GlowCode, как упоминалось в других похожих вопросах, на SO, когда я искал, прежде чем спрашивать.

Ответ 6

Существует также верификатор приложения. Он может отслеживать целую кучу других проблем, кроме утечек, таких как места, где вы забываете освобождать объекты win32, такие как дескрипторы и т.д....

Ссылка MSDN: http://msdn.microsoft.com/en-us/library/ms220948(VS.80).aspx

Ответ 7

Jacob, инструмент BoundsChecker внутри DevPartner Studio содержит два типа детекторов утечек для VС++. Неинструментальная версия будет табулировать утечки при завершении процесса. Детектор с инструментами времени компиляции разрушает утечки во время протекания утечки, отображая как текущий стек вызовов в точке утечки, так и трассировку стека распределения, показывающую, где была выделена утечка. 64-разрядная версия DPS и BoundsChecker 10.5 отправляется 4 февраля 2011 года с поддержкой x64-приложений для Visual Studio 2010, 2008 и 2005. У нас также есть новая модель ценообразования, поэтому вы можете лицензировать только функции BoundsChecker и ugrade до полного DPS если вы обнаружите, что вам понадобятся другие профилировщики или возможности статического анализа позже. Не забудьте также торговаться с продавцом. Цена платежного списка - это как цена наклейки на новый автомобиль. Бесстыдный плагин: я работаю над командой DevPartner. DPS 10.5 представляет мою команду большой выпуск технических возможностей, поскольку Compuware закрыл лабораторию NuMega. Оцените его для своего приложения и технического стека, когда 10.5 выйдет в прямом эфире. Приветствия. Matt Schuetze, владелец продукта DevPartner (и да, что означает ПО в обычных командных ролях Scrum.)

Ответ 8

VLD нельзя доверять более серьезным проектам.

У Intel есть хороший инструмент под названием Inspector.

После 3-дневного поиска хорошего инструмента для поиска утечек в бинарных файлах x64 с С++ в Visual Studio это единственный хороший вариант, который я нашел.

Ответ 9

Попробуйте Dr.Memory. Они имеют правильную визуальную студийную интеграцию, а документация отличная. Простота в использовании.

Ответ 10

http://www.saunalahti.fi/~tarmpika/diagnostic/

Я пробовал так много детекторов утечки памяти, что их было сложно подсчитать. Некоторые из них разбились, некоторые из них дали недействительные результаты, некоторые из них просто не помогли. В конце концов, я сделал свой собственный детектор утечек, но вложил в него столько усилий, что сделало его несвободным на время. Поддерживаемые управляемые/встроенные/32 и 64-разрядные архитектуры.