我有添加 vector 和存储结果的功能,但我不明白为什么我会得到分段核心转储。好久没学 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
,从而导致段错误。
关于c 分段核心转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19115921/