Кто-нибудь знает «технику» для обнаружения утечек памяти, вызванных умными указателями? В настоящее время я работаю над большим проектом, написанным на C ++ , в котором интенсивно используются умные указатели со счетчиком ссылок. Очевидно, у нас есть некоторые утечки памяти, вызванные умными указателями, на которые все еще ссылаются где-то в коде, так что их память не освобождается. Очень трудно найти строку кода с «ненужной» ссылкой, которая приводит к тому, что соответствующий объект не будет свободным (хотя он больше не используется).
В сети я нашел несколько советов, которые предлагали собирать стеки вызовов операций увеличения / уменьшения счетчика ссылок. Это дает мне хороший совет, какой фрагмент кода вызвал увеличение или уменьшение счетчика ссылок.
Но мне нужен какой-то алгоритм, который группирует соответствующие «стеки вызовов увеличения / уменьшения» вместе. После удаления этих пар стеков вызовов, я надеюсь, у меня остался (по крайней мере) один «увеличенный стек вызовов», который показывает мне фрагмент кода с «ненужной» ссылкой, который вызвал освобождение соответствующего объекта. Теперь будет несложно исправить утечку!
Но есть ли у кого-нибудь идея для "алгоритма", который делает группировку?
Разработка происходит под Windows XP .
(надеюсь, кто-то понял, что я пытался объяснить ...)
EDIt: я говорю о утечках, вызванных циклическими ссылками.