簡體   English   中英

分段錯誤:C中多維數組的動態內存分配

[英]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)是你的段錯誤的原因。 有效索引從0row-1 我猜你的意思是使用i而不是row

*(arr+i)=malloc(sizeof(int)*col);
printf("row: %d",arr[i]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM