分段错误(转储核心)

时间:2015-06-29 15:07:49

标签: c segmentation-fault

我尝试运行以下程序,但收到错误消息

  

“分段错误(转储核心)”

我的代码:

List<object>

有人可以帮助我在我的代码中找到问题吗?

2 个答案:

答案 0 :(得分:2)

在你的情况下,

 val[j]=ch;

未绑定的值减少j,它可以-转,并访问无效的内存,而后者又会调用undefined behaviour

一般建议:请务必检查您要使用的索引值的有效性。

即,getc()返回int值。有时,返回的值可能不适合char。改变

 char ch;

int ch = 0;

答案 1 :(得分:0)

        if (count>=62)
        {
          val[j]=ch;
          printf("%c ", val[j]);
          j--;
        }

您是否有可能会val[-1]及以下,看起来这就是您出现分段错误的原因。

if(j>=0)
{
  val[j] = ch;
  j--;
}

通过如上所示的检查确保您没有数组超出绑定访问权限。