我是编码的新手。当我在codecheff中提交我的代码时,它会给出"运行时错误(SIGSEGV)"。我不知道问题是什么,请帮忙。提前谢谢。
int call(int *x, int m)
{
int b[10], y, z;
for(y = 0 ; y<m ; y++)
{
int sum = 0;
z = *x;
while(z>0) {
sum = sum + z/5;
z=z/5;
}
b[y] = sum;
x++;
}
for(y = 0 ; y<m ; y++)
printf("\n%d", b[y]);
}
int main()
{
int n=0, i=0, a[10];
scanf("%d", &n);
for(i=0;i<n;i++){
scanf("%d", &a[i]);
}
call(a, n);
return 0;
}
答案 0 :(得分:1)
如果您获得SIGSEGV,则表示您尝试访问您的程序无法访问的细分受众群中的内存,或者您尝试访问您的程序可以访问的内存一种无效的方式。
当你遇到像这样的记忆分割错误时,你的第一个行动应该是使用Valgrind或Dr. Memory。
根据您的代码,我假设您在n&gt;时遇到问题。 10导致b和x中的缓冲区溢出。如果您将参数命名为有意义的参数,我们就会更容易解决。