Подтвердить что ты не робот

Бесплатное приложение для проверки утечек памяти в 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

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

4b9b3361

Ответ 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.