C 分段核心转储



我有一个添加向量和存储结果的功能,我无法弄清楚为什么我会得到一个分段核心转储。有一段时间没有做 C 了:/

void add(int *a, int *b, int *c, int n){
   int i;
   for(i = 0 ; i < n; n++)
   {
     c[i] = a[i] + b[i];
     i++;
   }
}
int main() {
 // vector_size = 100000
 // vector_a init with 100000 values
 // vector_b init with 100000 values
 int *result = malloc(vector_size * sizeof(int));
 add(vector_a,vector_b,result,vector_size);
}

您正在增加n而不仅仅是i,for 循环应如下所示:

for(i = 0; i < n; ++i)
{
    c[i] = a[i] + b[i];
}

在你的代码中,变量i最终会大于vector_size,导致分割错误。

以这样的方式修复代码(你得到了一个无限循环):

for(i = 0 ; i < n; i++)
{
   c[i] = a[i] + b[i];
}

相关内容

  • 没有找到相关文章

最新更新