如何在C++中枚舉所有已分配的對象(由new運算符分配)(不僅是那些具有自己的內存映射的對象,還包括堆中的那些對象?)?枚舉分配的對象
我需要這個來查找內存泄漏。
平臺:Linux,GCC,I386,AMD_K64(最好:獨立平臺)
可能沒有正式的方式,但也有可能是一個精幹的解決方法。 例如,是否有一些內部變量可以訪問?也許一個指向用於管理堆的列表的指針?
如何在C++中枚舉所有已分配的對象(由new運算符分配)(不僅是那些具有自己的內存映射的對象,還包括堆中的那些對象?)?枚舉分配的對象
我需要這個來查找內存泄漏。
平臺:Linux,GCC,I386,AMD_K64(最好:獨立平臺)
可能沒有正式的方式,但也有可能是一個精幹的解決方法。 例如,是否有一些內部變量可以訪問?也許一個指向用於管理堆的列表的指針?
你總是可以使用valgrind來檢查內存泄漏。無論是與你的包管理器安裝它,還是下載並編譯:http://valgrind.org/
如果您編譯在調試模式下您的應用程序可以找出下來到已分配的未釋放/刪除資源文件/線。
等待! Quote:地塊運行程序比正常慢20倍。我無法定期將其添加到我的程序中。 – Ohnemichel
您可以使用的valgrind它不正是你想要的(與它自己的實現替代的malloc)和計數分配/釋放
從理論上講,它會造成太多的開銷。順便說一句。沒有使用valgrind的反射使用massif.h。漂亮的工具,但沒有辦法在我的程序中添加功能,例如「讓指針指向第n個實例...」 – Ohnemichel
有可能兩種形式的記憶喪失
我敢肯定還有更多的工具。這些很受歡迎。
在Solaris中,我建議libumem用於Sun Studio中的泄漏跟蹤和分析器,以進行分析和內存分析。
我不能使用任何這種功能。我無法從觀察過程中找到一種方法(訪問內部地塊錄音)。Valgrind增加了一個巨大的新依賴項,擾亂了程序的身份,甚至可能引入內存泄漏。 – Ohnemichel
[massif](http://valgrind.org/info/tools.html#massif) – jsantander
你要求的只是檢測器的怪物卡車上的輪胎。爲什麼不使用衆多現有產品之一? – delnan
因爲我想構建摩托車:)它應該爲用戶提供查找視圖,而不會在程序中加入太多的權重,以便在程序失敗時發現他自己正在發生的事情。但是,現在,我正在嘗試地塊,其中我不知道它劫持了malloc函數(並且我不知道是否有任何新的調用malloc) – Ohnemichel