Бесплатное приложение для проверки утечек памяти в Windows x64?

Мне поручено проверять утечку памяти для API моим боссом. Приложение создано в C и С++. Таким образом, существует возможность выделения памяти с помощью malloc и new. Я хочу проверить утечку памяти в Visual Studio 2010 в режиме отладчика в 64-битной Windows 7. Проблема с диспетчером задач заключается в том, что он не показывает стабильные показания (память увеличивается и уменьшается на небольшие суммы). Также разница небольшая до и после запуска API. Поэтому я не могу сказать, что х количество памяти протекает в течение цикла.

Я искал в Интернете и обнаружил, что у Linux есть отличный инструмент для этого. Однако я хочу надежный инструмент для своих требований (Windows 7). Я столкнулся с этим:

http://winleak.sourceforge.net/

http://sourceforge.net/projects/duma/?source=recommended

Как упоминалось выше:

проверить утечку памяти в окнах

инструмент

http://technet.microsoft.com/en-us/library/bb457063.aspx

не подходит для моих требований. Было бы очень полезно, если вы могли бы предложить хороший инструмент, так как клиент, который запрашивает это, очень важен для нашей компании. Спасибо!

Ответ 1

Я предлагаю использовать визуальный детектор утечки, поскольку он несколько раз меня обслуживал. Вы также можете попытаться использовать valgrind для окон (хотя я не имел большого успеха в этом). Dr. Память также помогла мне несколько раз.

EDIT: также посмотрите здесь.

Ответ 2

Библиотека CRT имеет собственный механизм обнаружения утечки памяти. Вывод не так детализирован, как дает вам визуальный детектор утечек, но он намного быстрее, чем VLD (который легко запускается в течение десятков минут после выхода программы).

Чтобы включить обнаружение утечки памяти CRT, в начале stdafx.h (или в другом месте) установите следующее:

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

Добавьте до следующего пункта (ов) выхода программы следующее:

_CrtDumpMemoryLeaks();

Когда вызывается _CrtDumpMemoryLeaks(), он печатает всю пропущенную память, которую он может найти в окне вывода.

Дополнительная информация о MSDN.

Примечание:. Когда я использовал это, я получил менее подробный вывод без номеров строк, хотя я определил _CRTDBG_MAP_ALLOC в начале stdafx.h.