我已经用这种方式定义了一个动态数组:
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 fault
:n_data[n_cnt] = distance;
我想知道我做错了什么。
答案 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的值。