给定双重自由错误(由valgrind报告),有没有办法找出内存的分配位置?Valgrind只告诉我释放站点的位置(即调用free()),但我想知道内存的分配位置.
Yve*_*tin 10
要让Valgrind跟踪分配堆栈跟踪,您必须使用以下选项:
--track-origins=yes --keep-stacktraces=alloc-and-free
Run Code Online (Sandbox Code Playgroud)
然后,Valgrind将Block was alloc'd at在Address ... inside a block of size x free'd警报之后报告分配堆栈.
如果您的应用程序很大,--error-limit=no --num-callers=40选项也可能有用.