有没有办法找出这个人忘记free()
记忆的位置?
Valgrind只说了那里有多少分配和释放,而不是那个人应该拥有的时候没有自由的地方。有没有办法找出应该释放的内存?
答案 0 :(得分:1)
我想你想要的是让valgrind报告错误 当你“失去”指向一段记忆的最后一个指针时。
valgrind没有这样的功能。曾经有过实验 这样做的工具(--tool = omega),但它在valgrind中不再(不再是?) 知识库,IIUC,因为有许多误报和/或假阴性。
你最接近的是使用valgrind + gdb(通过vgdb),然后放 程序中不同位置的一些断点,并进行泄漏搜索 在所有这些地方。通过一种“二分法”搜索,您可能会发现 失去指针的地方。
参见http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver 和http://www.valgrind.org/docs/manual/mc-manual.html#mc-manual.monitor-commands 有关将gdb与valgrind一起使用并进行交互的更多详细信息 泄密搜索。