c 分段核心转储?

标签 c arrays malloc

我有添加 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/

相关文章:

c - 是否有任何操作系统为 malloc() 实现缓冲?

c - C 中的表达式解析

c - 为什么在 C 编程中需要 Fortran 包装器?

javascript - 初始化 "complex"嵌套的 javascript/对象

c - 无法将 wchar_t 的内容复制到另一个已 malloc 的 wchar_t var 中?

alignment - malloc 与 posix_memalign

c++ - libunrar RARReadHeader 总是返回 ERAR_BAD_DATA

c - 在C语言中,char*和char[]有什么区别?

python - 将 Camel 帽的伪代码写入数组

java - 计算数组的平均值