我尝试运行以下程序,但收到错误消息
“分段错误(转储核心)”
我的代码:
List<object>
有人可以帮助我在我的代码中找到问题吗?
答案 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--;
}
通过如上所示的检查确保您没有数组超出绑定访问权限。