c++ - 如何追踪 "double free or corruption"错误

标签 c++ c debugging free

当我运行我的 (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/

相关文章:

Android Studio 从未完成将应用程序上传到 Nexus 10

c++ - 如何在程序执行时查看 Valgrind Massif 输出(或其他堆分析器)?

c++ - 如何打印预定义的 cflags

c - 删除视频的某些部分并重新制作关键帧(c++ + libav)

c - 根据空格划分 char 数组中的字符

c - 从图像中获取信息

android - 在由 Android 应用程序链接的 native 库中调试崩溃的最简单方法?

java - NoClassDefFound错误: bea/jmapi/MethodProfileData when profiling app using JRockit Mission Control

c++ - 调整 Windows 控制台和 MFC 静态库的大小

c++ - 从 C++ 中同一个类的另一个成员函数中调用成员函数,Objective C