c++ - C++ 中神秘的段错误?

标签 c++ segmentation-fault

我找遍了,找不到这样的东西。现在,我不会让你厌烦我的整个程序。它长得令人难以置信。但是,这是您的基本概述:

int main()
{
  int i=0;
  int h=5;

  cout << "h(IS) = " << h << endl;

  cout << "testing comment.";

  while(i < 10)
  {
  cout << "I'm in the loop!";
  i++;
  }

  return 0;
}

看起来很棒,对吧?好吧,问题来了。我运行它,但出现段错误。最奇怪的部分是我得到它的地方。该测试评论甚至不打印。哦,如果我注释掉循环之前的所有行,我仍然会出错。

所以,这是我的输出,所以你明白了:

h(IS) = 5
Segmentation fault

我完全,完全,困惑。在我的程序中,h 调用了一个函数 - 但注释掉打印 h 的行和函数调用都没有效果,事实上,它所做的只是给出了段错误,其中打印 h 行上方的行曾经是。

是什么导致了这个故障?我可以做些什么来测试它来自哪里?

请让您的回答简单一些,与这里的大多数人相比,我只是一个初学者 :)

注意:我可以根据要求提供我的完整代码,但它有 600 行长。

编辑:我在这里粘贴了真实的代码:http://pastebin.com/FGNbQ2Ka

请原谅到处都是奇怪的评论 - 以及数组。这是一项学校作业,我们必须使用它们,而不是指针。目标是打印出 15 拼图的解决方案。现在是凌晨 1 点,所以我不会在整个过程中修复我恼火的评论。

我最近很生气,并评论了整个第一次打印,只是因为我认为它是那里的东西......但不......它不是。我仍然有错。只是什么都不打印。

有兴趣的可以输入0 6 2 4 1 10 3 7 5 9 14 8 13 15 11 12

非常感谢所有提供帮助的人! :)

最佳答案

你滑过数组边界,导致损坏:

for (i=0; i<=4; i++)
{
  for (j=0; j<=4; j++)
  {
        if (cur[i][j] == 0)
        {
          row = i;
          col = j;
        }
  }
}

您的 ij 索引不得达到 4。

关于c++ - C++ 中神秘的段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15038752/

相关文章:

c++ - C++ 中的 HackerRank 大排序段错误

c++ - Taglib 设置相册图片但给出 seg 错误

C++ 检查结构是否为 NULL 或未设置,即使它的 have 运算符相等

c - 尝试取消引用通用指针。

c - 获取 char 数组的所有行和段错误

c - 2 个 printf() 之间的程序段错误

c++ - 使用 boost::geometry::intersects 时出现运行时错误

c++ - 在成员函数中,是否可以暂时将参数 "parent"解释为子参数?

c++ - ffmpeg AVFrame 到 opencv Mat 转换

将数据复制/扫描/读取到未初始化的指针时崩溃或 "segmentation fault"