Я отправил несколько дней назад об утечках памяти с помощью умных указателей. Теперь я могу выяснить, у каких объектов происходит утечка памяти, но я не могу понять, откуда у них утечка памяти.
Я использую тот же код, как указано здесь
Обнаружение утечки памяти в подсчитанных объектах
Я прочитал много комментариев, но ни один из них не объясняет должным образом. Я пробовал использовать макросы ФАЙЛ а также ЛИНИЯ , они оба печатают файл и строку класса refmanager.
Есть хороший способ отладить эту проблему. Пожалуйста, укажите на хороший пример.
Самый простой способ — использовать Valgrind (в Linux и Mac) и аналогичный инструмент в Windows.
Вы также можете в конструкторе умного указателя взять обратную трассировку (используя функцию backtrace () в Linux и Mac) или аналогичную функцию из dbghelp.dll в Windows, а затем сохранить обратную трассировку где-нибудь при выделении и удалить обратную трассировку при открепление. Затем при выходе выведите все оставшиеся следы.
В Windows вы можете использовать новые инструменты диагностики памяти в Visual Studio 2015: