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);
}
答
您正在增加,而不是仅仅i
n
,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];
}
+0
得到它,我有靶材固定用阵列并没有注意到循环..谢谢 –
编成法典'\'Ñ\''和'\'I \'' –