簡體   English   中英

尋找記憶塊

[英]finding blocks of memory

有什么方法可以找出那個人忘記了free()內存的地方嗎?

Valgrind只說有多少分配和釋放,但是沒有說這個人在應該擁有的時候沒有釋放。 有什么方法可以找到應該釋放的內存嗎?

我猜想您想讓valgrind在丟失最后一條指向內存的指針時報告錯誤。

valgrind沒有這種功能。 過去曾經有一個實驗性工具可以做到這一點(--tool = omega),但是在valgrind存儲庫IIUC中卻不再存在了(因為?),因為存在許多假陽性和/或假陰性。

最接近的方法是使用valgrind + gdb(通過vgdb),並在程序的各個位置放置一些斷點,並在所有這些位置進行泄漏搜索。 通過一種“二分法”搜索,您可能會找到丟失指針的位置。

參見http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserverhttp://www.valgrind.org/docs/manual/mc-manual.html #mc-manual.monitor-commands獲得有關將gdb與valgrind一起使用以及進行交互式泄漏搜索的更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM