2013-10-01 103 views
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); 
} 

回答

6

您正在增加,而不是仅仅in,for循环应该是这样的:

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

在你的代码最终变量i将得到更大比vector_size,导致分段错误。以这样的方式

+1

编成法典'\'Ñ\''和'\'I \'' –

4

修正码(你有无限循环):

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

得到它,我有靶材固定用阵列并没有注意到循环..谢谢 –