2012-10-15 26 views
1

我幾天前發佈了關於智能指針的內存泄漏問題。現在我能夠找出哪些對象正在泄漏內存,但我無法從內存泄漏的位置找出它。尋找誰通過智能指針創建對象

我使用相同的代碼如下 Detecting memory leak in reference counted objects

提到我看了很多評論,但他們沒有解釋正確。我試過使用宏FILELINE,他們都打印文件和refmanager類的行。

有沒有一個很好的方法來調試這個問題。請指出一些很好的例子。

+0

你是說日誌表明智能指針類本身的文件和行# ?或稱爲「新」的位置? –

+0

日誌指示智能指針類本身的行..任何想法如何解決這個問題。 – anand

回答

1

最簡單的方法可能是在Windows上使用Valgrind(在Linux和Mac上)和一些類似的工具。

您也可以在智能指針的構造函數中使用backtrace(在Linux和Mac上使用函數backtrace()函數)或從窗口中的dbghelp.dll執行類似的函數,然後在分配時將回溯保存到某處取消分配時移除回溯。然後在退出時打印所有剩餘的回溯。

+0

我在窗戶上.. – anand