Может ли визуальный детектор утечки исключить ложные положительные утечки памяти?

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

Очень признателен

1 ответ

После некоторого исследования я обнаружил, что этот VLD не может исключить эти ложноположительные утечки памяти (например, новые в статическом объекте), так как он также использует глобальный статический объект в своем файле vld.dll, и его dtor сообщит о возможной утечке памяти. Поскольку вы не могли обеспечить их последовательность деструктора, вы не могли использовать VLD для обнаружения утечки памяти в статическом объекте.

Тем не менее, я также нашел обходное решение, так как вы можете изменить исходный код этого инструмента, вы можете использовать atexit для регистрации функции reportMemoryLeak в вашем ctor, которая обеспечит вызов этого метода после dtor.

И, честно говоря, это на самом деле не так уж прямолинейно, так что посмотрите этот http://cfc.kizzx2.com/index.php/detecting-memory-leaks-with-windbg-the-modern-and-free-way/ use windbg + куча DebugCRT в порядке!

Другие вопросы по тегам