[英]Segmentation fault: Dynamic memory allocation for multidimensional array in 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]
它顯示了不同的地址 [這就是為什么sigsegv]。
for(i=0;i<row;i++){
for(j=0;j<col;j++){
arr[i][j]=0; //this point
}
puts("done");
}
AFAIK, somearr
和&somearr
對於1維數組是相同的。 這里給出了第0行的arr [0]和* arr地址但是什么是arr? 它為什么不同?
[我在Stack Overflow中檢查了其他相關問題,但我沒有遇到這些問題,也無法解決這個問題。]
研究這個概念的任何參考或鏈接都會很棒。
*(arr+row)=malloc(sizeof(int)*col);
printf("row: %d",arr[row]);
試圖在for循環中訪問*(arr+row)
是你的段錯誤的原因。 有效索引從0
到row-1
。 我猜你的意思是使用i
而不是row
。
*(arr+i)=malloc(sizeof(int)*col);
printf("row: %d",arr[i]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.