Reputation: 639
I have defined a dynamic array this way:
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));
in a loop I calculate distance and do so:
n_cnt++;
n_data[n_cnt] = distance;
but it returns segmentation fault
here : n_data[n_cnt] = distance;
I want to know if I'm doing something wrong.
Upvotes: 0
Views: 96
Reputation: 2729
n_data_c = count_lines_of_file("abnorm");
this is generating the segmentation fault. Check the value of n_data_c
Upvotes: 0
Reputation: 707
Check what malloc returned, if it returned 0, then it failed. More likely, I think, is your n_cnt is out of bounds. If it's negative, or greater than or equal to n_data_c, then you'll get a segfault.
Upvotes: 3
Reputation: 101
You are overrunning your array buffer..
Compare n_cnt with n_data_c and only access the array if n_cnt < n_data_c/
n_cnt++;
if (n_cnt < n_data_c)
{
n_data[n_cnt] = distance;
}
Upvotes: 0