我有一个有趣的细分错误。它发生在我的代码中的未知位置。该代码非常简单,有两个对象和一个通用函数。该功能应该创建对象的图形。当我仅通过一个主调用函数来运行代码时,就会出现段错误和GDB中的以下代码行。


  程序收到信号SIGSEGV,分段故障。
  来自/lib/x86_64-linux-gnu/libc.so.6的free()中的0x00007ffff758a02c


当我在函数调用之前的最右边添加一行代码时,它只是cout <
编辑:

感谢您使用冲洗的帮助。我在代码中找到了导致seg错误的区域。我正在使用的功能对我来说是新的,所以我仍然有些失落。有人看到错误了吗?

const char* inFile = inFileP.c_str();
list<CContinent> world;
CCountry *homeCountry = new CCountry;
CCountry *neighborCountry = new  CCountry;

fstream filestr;
filestr.open(inFile, fstream::in | fstream::out | fstream::app);
string line;

最佳答案

从痛苦的经验来看,当malloc或free崩溃时,这是因为堆损坏。任何常见的可疑对象都可能导致堆损坏-分配10字节,写入11-释放,然后写入已释放的内存,两次释放,等等。

07-24 14:26