当我运行我的 (C++) 程序时,它会因此错误而崩溃。
* glibc detected * ./load: double free or corruption (!prev): 0x0000000000c6ed50 ***
如何追踪错误?
我尝试使用 print (std::cout
) 语句,但没有成功。 gdb
可以让这更容易吗?
最佳答案
如果你使用 glibc,你可以将 MALLOC_CHECK_
环境变量设置为 2
,这将导致 glibc 使用一个容错版本的 malloc
,这将导致您的程序在双重释放完成时中止。
您可以在运行程序之前使用 set environment MALLOC_CHECK_ 2
命令从 gdb 设置它;程序应该中止,free()
调用在回溯中可见。
见 man page for malloc()
了解更多信息
关于c++ - 如何追踪 "double free or corruption"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2902064/