簡體   English   中英

c分段核心轉儲?

[英]c segmentation core dump?

我有一個添加向量和存儲結果的功能,我不知道為什么我要得到一個分割核心轉儲。 有一段時間沒做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 ,從而導致分段錯誤。

以這種方式修復代碼(您遇到了無限循環):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM