The code is as below for accessing the nested double pointer structure. I am facing segmentation faults.
Can any one let me know how i should be accessing the structure elements.
code is below:
I checked with the valgrind tool for memory leaks.Code:struct x { int roll; int class; }; struct y { int year; struct arr { struct x **array; int count; }*arr; }; struct z { struct arr1{ struct y **array; int cnt; }*arr1; }; int main(void) { int i,j; struct arr a1; struct arr1 a2; struct z aka; aka.arr1 = &a2; aka.arr1->cnt = 98989; aka.arr1->array = (struct y **) malloc(2 * sizeof(struct y )); assert(aka.arr1->array); for(i=0;i<2;i++) { aka.arr1->array[i] = (struct y *) malloc(2 * sizeof(struct y )); assert(aka.arr1->array[i]); aka.arr1->array[i]->year = 2014; aka.arr1->array[i]->arr = &a1; aka.arr1->array[i]->arr->array = (struct x **) malloc(2 * sizeof(struct x)); assert(aka.arr1->array[i]->arr->array); for(j=0;j<2;j++) { aka.arr1->array[i]->arr->array[j] = (struct x *) malloc(2 * sizeof(struct x)); assert(aka.arr1->array[i]->arr->array[j]); aka.arr1->array[i]->arr->array[j]->roll = 12345; aka.arr1->array[i]->arr->array[j]->class = 98765; } } free(aka.arr1->array[0]->arr->array[0]); free(aka.arr1->array[0]->arr->array[1]); free(aka.arr1->array[1]->arr->array[0]); free(aka.arr1->array[1]->arr->array[1]); free(aka.arr1->array[0]->arr->array); // free(aka.arr1->array[1]->arr->array); => Segmentation fault at it this place if i enable and memory leak as well. free(aka.arr1->array[0]); free(aka.arr1->array[1]); free(aka.arr1->array); return 0; }
Can anyone help and let me know what needs to be done.
Thanks,
Lokesh