是否有任何方法可以跟蹤C程序每一步分配的內存數量,重新分配和釋放的內存量?我的意思是一步步分配程序中的所有內容,而不是錯誤,內存泄漏或某種方式。跟蹤內存分配
跟蹤內存分配
回答
一種常見的方法是爲忽略的malloc /免費使用宏:
#define malloc(size) custom_malloc(size, __FILE__, __LINE__)
然後,您可以有custom_malloc不正常的malloc,並轉儲配置信息保存到文件(或任何你想用它做)。
要跟蹤有多少內存正在被釋放,一個選項是在每個malloc調用上分配一個額外的字段來存儲分配的大小,然後您可以檢查空閒時間。 或者您可以將malloc/free指針轉儲到文件,然後編寫腳本來後期處理並排列它們。這有點依賴於你想要處理的信息。
嗯,謝謝,它幫助:) –
在MFC環境中的窗口DEBUG_NEW是一種方法。
http://msdn.microsoft.com/en-us/library/aa297313%28v=vs.60%29.aspx
另一種是使用標準的文件和行號重新定義的功能ALLOC家庭。
#define malloc(size) custom_malloc(size, __FILE__, __LINE__)
第二個鏈接是非常有幫助,謝謝:) –
是有辦法做到這一點。我只知道一種方法。它的名字叫做Pin。理想情況下,您可以將pin tool
附加到二進制文件,然後它將訪問所有內存訪問和內容。它不需要對源代碼進行任何修改。
這將需要一些編程在你身邊編寫一個Pin工具。針工具本質上就是您在程序運行中指定要監視的參數的代碼,以及如何執行。它非常靈活。但要小心,它有一點學習曲線。所以,只有當你有時間學習時纔是理想的。但如果你立即得到結果,它可能不足以達到你的目的。
另外請注意,默認情況下,Pin
提供了一些您可能感興趣的或您可以修改以滿足您的需求的工具。您可能想要在(我頭腦的頂部)的一些工具是: 1. Pinatrace 1. MallocTrace
我可能拼錯了一些東西。但有很多東西可能會給你想要的東西!
而其他的解決方案,將是切實可行的是@happydave和一個我不建議中提到的一個redefing的malloc
和free
功能,這樣當你調用malloc /免費的,它記錄了你的參數感興趣的。我推薦Pin重新定義malloc的唯一原因是當你有時間和將來你希望爲你的追蹤器添加更多的功能。
嗯,我想我會嘗試兩個,謝謝:) –
不要忘記,並非所有的東西都運行在英特爾(R)二進制文件中...重新定義malloc等是獲得基本級別跟蹤的合理方法,雖然它可能值得使用第三方庫,但有時可以通過重新定義方法獲得快速答案。 –
我需要它,只是因爲我們的下一個考試要求以不分配額外內存的方式實現程序,並且每次重新分配只允許80個字節。當然,我知道它太低效了,但它只是爲了考試。無論如何,謝謝,我認爲宏定義做了它的工作:) –
- 1. 我如何跟蹤內存分配?
- 2. 如何跟蹤內存分配在c + +
- 3. Android - 內存分配跟蹤器沒有跟蹤我的測試分配
- 4. 如何跟蹤由STL庫分配的內存
- 5. 如何跟蹤和Android中調試外部內存分配?
- 6. 如何跟蹤列表的分配內存?
- 7. 跟蹤每個功能分配多少內存
- 8. 重載新的和刪除C++跟蹤內存分配
- 9. 如何跟蹤C++標準庫調用的內存分配?
- 10. C中的內存分配跟蹤 - 我做對了嗎?
- 11. 在c/C++中跟蹤動態內存分配
- 12. 如何跟蹤C#中的內存分配情況
- 13. Android如何跟蹤分配?
- 14. 跟蹤assinged對象分配
- 15. 跟蹤內存泄漏
- 16. 跟蹤z3內存泄漏
- 17. 跟蹤內存泄漏
- 18. Python內存泄漏跟蹤?
- 19. iPhone跟蹤內存覆蓋
- 20. 內存跟蹤器功能
- 21. 分配跟蹤器已禁用
- 22. 編輯分析跟蹤器配置
- 23. 如何跟蹤所有的堆分配?
- 24. DDMS分配跟蹤器填充「SimpleListIterator」
- 25. iOS:分配對象的跟蹤量
- 26. 如何跟蹤使用C內存分配++(尤其是新/刪除)
- 27. 如何跟蹤對堆上分配的內存塊所做的更改
- 28. 谷歌分析頁面/內容跟蹤
- 29. 跟蹤javascript內存使用情況
- 30. 應用程序內存使用跟蹤
可能重複的[GetTotalMemory分配在C](http://stackoverflow.com/questions/10472929/gettotalmemory-allocation-in-c) –