найти, кто создает объект с помощью умного указателя

Я отправил несколько дней назад об утечках памяти с помощью умных указателей. Теперь я могу выяснить, у каких объектов происходит утечка памяти, но я не могу понять, откуда у них утечка памяти.

Я использую тот же код, как указано здесь
Обнаружение утечки памяти в подсчитанных объектах

Я прочитал много комментариев, но ни один из них не объясняет должным образом. Я пробовал использовать макросы ФАЙЛ а также ЛИНИЯ , они оба печатают файл и строку класса refmanager.

Есть хороший способ отладить эту проблему. Пожалуйста, укажите на хороший пример.

1

Решение

Самый простой способ — использовать Valgrind (в Linux и Mac) и аналогичный инструмент в Windows.

Вы также можете в конструкторе умного указателя взять обратную трассировку (используя функцию backtrace () в Linux и Mac) или аналогичную функцию из dbghelp.dll в Windows, а затем сохранить обратную трассировку где-нибудь при выделении и удалить обратную трассировку при открепление. Затем при выходе выведите все оставшиеся следы.

1

Другие решения

В Windows вы можете использовать новые инструменты диагностики памяти в Visual Studio 2015:

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector