0

ベクトルを追加して結果を保存する機能がありますが、セグメンテーション コア ダンプを取得する理由がわかりません。しばらく 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);
}
4

2 に答える 2

6

for ループは次のようになりnます。i

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

コードでは、最終的に変数iが よりも大きくなりvector_size、セグメンテーション エラーが発生します。

于 2013-10-01T12:18:13.297 に答える
4

そのような方法でコードを修正します (無限ループが発生します)。

for(i = 0 ; i < n; i++)
{
   c[i] = a[i] + b[i];
}
于 2013-10-01T12:18:34.150 に答える