C++中的神秘分段错误?

0 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;
}
Run Code Online (Sandbox Code Playgroud)

看起来很棒,对吗?好的,这就是问题所在.我运行它,我得到一个分段错误.最奇怪的部分是我得到它的地方.测试评论甚至没有打印.哦,如果我在循环之前注释掉所有的行,我仍然会得到错误.

所以,这是我的输出,所以你理解:

h(IS) = 5
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

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

是什么导致了这个错误?我能做些什么来测试它来自哪里?

保持你的答案简单,我只是一个初学者,相比大多数人:)

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

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

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

我最近感到恼火,并评论了整个第一次印刷只是因为我认为它是那里的东西......但不是......它不是.我还是弄错了.只是没有印刷.

对于那些感兴趣的人,我的输入信息是0 6 2 4 1 10 3 7 5 9 14 8 13 15 11 12

非常感谢,每个人都在帮助!:)

Som*_*ame 5

你滑过数组边界,导致腐败:

for (i=0; i<=4; i++)
{
  for (j=0; j<=4; j++)
  {
        if (cur[i][j] == 0)
        {
          row = i;
          col = j;
        }
  }
}
Run Code Online (Sandbox Code Playgroud)

ij指数不得达到4.