Я пытался динамически создавать многомерный массив в C, но получаю ошибку сегментации!Ошибка сегментации: динамическое распределение памяти для многомерного массива в C
int **arr=malloc(sizeof(int*) *row);
printf("&ar:r%d arr:%d %d\n\n",*arr,arr,arr[0]);
for(i=0;i<row;i++){
*(arr+i)=malloc(sizeof(int)*col);
printf("row: %d",arr[i]);
}
printf("\nbase arr: %d",&arr[0][0]);
Я проверил адрес строки и выделенной памяти, как требуется для всех элементов в столбце. Но все же, когда я обращаюсь к нему arr[i][j]
, он показывает другой адрес [Вот почему сиггев].
for(i=0;i<row;i++){
for(j=0;j<col;j++){
arr[i][j]=0; //this point
}
puts("done");
}
AFAIK, somearr
и &somearr
же для 1 одномерного массива. Здесь он дает arr [0] и * arr адрес строки 0. но что такое arr? почему это другое?
[Я проверил другие связанные вопросы в Stack Overflow, но у меня нет этих проблем и не может решить эту до сих пор.]
Любые ссылки или ссылки на изучение концепции будет большим.
Где именно вы получаете segfault? Можете ли вы опубликовать вывод консоли из этого кода? –