我幾天前發佈了關於智能指針的內存泄漏問題。現在我能夠找出哪些對象正在泄漏內存,但我無法從內存泄漏的位置找出它。尋找誰通過智能指針創建對象
我使用相同的代碼如下 Detecting memory leak in reference counted objects
提到我看了很多評論,但他們沒有解釋正確。我試過使用宏FILE和LINE,他們都打印文件和refmanager類的行。
有沒有一個很好的方法來調試這個問題。請指出一些很好的例子。
我幾天前發佈了關於智能指針的內存泄漏問題。現在我能夠找出哪些對象正在泄漏內存,但我無法從內存泄漏的位置找出它。尋找誰通過智能指針創建對象
我使用相同的代碼如下 Detecting memory leak in reference counted objects
提到我看了很多評論,但他們沒有解釋正確。我試過使用宏FILE和LINE,他們都打印文件和refmanager類的行。
有沒有一個很好的方法來調試這個問題。請指出一些很好的例子。
最簡單的方法可能是在Windows上使用Valgrind(在Linux和Mac上)和一些類似的工具。
您也可以在智能指針的構造函數中使用backtrace(在Linux和Mac上使用函數backtrace()函數)或從窗口中的dbghelp.dll執行類似的函數,然後在分配時將回溯保存到某處取消分配時移除回溯。然後在退出時打印所有剩餘的回溯。
我在窗戶上.. – anand
在Windows下你可以使用新的內存診斷工具在Visual Studio 2015年:
你是說日誌表明智能指針類本身的文件和行# ?或稱爲「新」的位置? –
日誌指示智能指針類本身的行..任何想法如何解決這個問題。 – anand