C中的动态数组导致分段错误

时间:2014-02-19 06:19:07

标签: c arrays dynamic

我已经用这种方式定义了一个动态数组:

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;

我想知道我做错了什么。

4 个答案:

答案 0 :(得分:3)

检查malloc返回的内容,如果返回0,则失败。我认为,更有可能的是你的n_cnt超出界限。如果它是负数,或者大于或等于n_data_c,那么你将得到一个段错误。

答案 1 :(得分:0)

您正在超越阵列缓冲区。

将n_cnt与n_data_c进行比较,只有在n_cnt< n_data_c /

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

答案 2 :(得分:0)

n_data_c = count_lines_of_file("abnorm");

这会产生分段错误。检查n_data_c

的值

答案 3 :(得分:0)

尝试在mallocing之前打印n_data_c的值。