寻找内存块

finding blocks of memory

有什么办法可以找出那个人忘记free()记忆的地方吗?

Valgrind 只说有多少分配和释放,但没有说明该人在应该释放时没有释放的地方。有什么办法可以找出应该释放的那块内存吗?

我猜你想要的是让valgrind报错 当你 'lose' 最后一个指针指向一块内存时。

valgrind 没有这样的功能。曾经有一个实验 执行此操作的工具 (--tool=omega),但它不在 valgrind 中(不再?) 存储库,IIUC,因为有很多假阳性 and/or 假阴性。

最接近的做法是使用 valgrind + gdb(通过 vgdb),然后将 在程序的不同位置设置一些断点,并进行泄漏搜索 在所有这些地方。通过某种 'dichotomic' 搜索,您可能会发现 丢指针的地方

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 一起使用并进行交互的更多详细信息 泄漏搜索。