c++ - 如何判断段错误?

标签 c++ graph segmentation-fault

我有一个有趣的段错误。它出现在我的代码中一个未知的地方。代码相当简单,两个对象,一个通用函数。该函数应该创建对象的图形。当我运行代码时只有一个 main 调用函数,我在 GDB 中遇到段错误和以下代码行。

Program received signal SIGSEGV, Segmentation fault. 0x00007ffff758a02c in free () from /lib/x86_64-linux-gnu/libc.so.6

当我在函数调用之前的 main 中添加一行时,它只是 cout << "Check";我仍然遇到段错误,但检查没有出现在输出中。真的迷失在这里。接下来我应该尝试什么?

编辑:

感谢您在使用 flush 方面的帮助。我在代码中找到了导致段错误的区域。我正在使用的功能对我来说是新的,所以我还是有点迷茫。有人看到错误了吗?

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 - 释放,然后写入释放的内存,双重释放,等等。

关于c++ - 如何判断段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084075/

相关文章:

c++ - 为契约(Contract)指定违规处理程序

assembly - 需要帮助验证汇编代码

c++ - DescrpitorExtractor::create ("SIFT") 返回 0?

python - Boruvka 算法有向图的最小生成树

r - 使用 tree 包绘制带有一些松鼠的树时出错

javascript - 在网页上动态更新图表

c - FFTW计划段错误

在 C 中调用 NASM 函数

c++ - 如何在 Visual Studio 2008 中折叠选定的代码块?

c++ - 运行时错误和程序崩溃