我试图在 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
对于一维数组是相同的。这里给出了第 0 行的 arr[0] 和 *arr 地址。但是什么是 arr?为什么不一样?
[我在 Stack Overflow 中检查了其他相关问题,但我没有这些问题,仍然无法解决。]
任何研究这个概念的参考资料或链接都会很棒。