Какой лучший детектор утечки свободной памяти для программы C/С++ и ее подключаемых DLL?

У меня есть .exe и много модулей plug-in.dll, которые загружает .exe. (У меня есть источник для обоих.) Решение для кросс-платформенных (с исходным) было бы идеальным, но платформа может быть сужена до WinXP и Visual Studio (7.1/2003 в моем случае).

Встроенный детектор утечки VS предоставляет только строку, из которой был вызван новый /malloc, но у меня есть оболочка для распределений, поэтому лучше всего будет иметься трассировка символа в виде столбца.

Детектор также сможет обнаруживать утечку как в .exe, так и в своих подключаемых модулях .dll.

Ответ 1

Я лично использую Visual Leak Detector, хотя он может вызвать большие задержки при утечке больших блоков (он отображает содержимое всего просочившегося блока).

Ответ 2

Если вы не хотите перекомпилировать (как требуется Visual Leak Detector), я бы рекомендовал WinDbg, который является мощным и быстрым (хотя это не так просто, как хотелось бы).

С другой стороны, если вы не хотите связываться с WinDbg, вы можете взглянуть на UMDH, который также разработан Microsoft и его легче изучить.

Взгляните на эти ссылки, чтобы узнать больше о WinDbg, утечке памяти и управлении памятью в целом:

Ответ 3

У меня были хорошие впечатления от Rational Purify. Я также слышал хорошие вещи о Valgrind

Ответ 4

Как для меня, я использую deleaker для обнаружения утечек. Я рад.

Ответ 5

Мой свободный доступный профайлер памяти MemPro позволяет сравнивать 2 моментальных снимка и дает трассировки стека для всех распределений.

Ответ 7

Как уже сообщал мой друг, у С++ есть много детекторов утечек. Все это вызовет накладные расходы при запуске вашего кода, примерно на 20% медленнее. Я предпочитаю Visual Leak Detector для Visual С++ 2008/2010/2012, вы можете скачать исходный код с ввести описание ссылки здесь.