运行时错误(SIGSEGV)

时间:2015-11-09 18:59:08

标签: c

我是编码的新手。当我在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;   
}

1 个答案:

答案 0 :(得分:1)

如果您获得SIGSEGV,则表示您尝试访问您的程序无法访问的细分受众群中的内存,或者您尝试访问您的程序可以访问的内存一种无效的方式。

当你遇到像这样的记忆分割错误时,你的第一个行动应该是使用Valgrind或Dr. Memory。

根据您的代码,我假设您在n&gt;时遇到问题。 10导致b和x中的缓冲区溢出。如果您将参数命名为有意义的参数,我们就会更容易解决。