簡體   English   中英

C中的動態數組導致分段錯誤

[英]Dynamic array in C cause segmentation fault

我用這種方式定義了一個動態數組:

double   *n_data ;
int n_data_c = 0, n_cnt = 0;
n_data_c = count_lines_of_file("abnorm");
n_data = (double *)malloc(n_data_c * sizeof(double));

循環計算距離,並執行以下操作:

n_cnt++;
n_data[n_cnt] = distance;

但它在此處返回segmentation faultn_data[n_cnt] = distance;

我想知道我做錯了什么。

檢查返回的malloc,如果返回0,則失敗。 我認為,您的n_cnt更可能超出范圍。 如果它為負數,或者大於或等於n_data_c,則將出現段錯誤。

您正在溢出數組緩沖區。

比較n_cnt與n_data_c,僅在n_cnt <n_data_c /

n_cnt++;
if (n_cnt < n_data_c)
{
n_data[n_cnt] = distance;
}

n_data_c = count_lines_of_file("abnorm");

這會產生細分錯誤。 檢查n_data_c的值

嘗試在分配之前打印n_data_c的值。

暫無
暫無

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

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