我希望实现具有双指针的2D数组,并且我希望每个数组在内存空间中是连续的.因此每个数组之间应该有20个字节.但下面的代码会给出我所认为的不同结果. 有人能解释为什么每个数组不是连续的吗?
#define ROW 5
#define COL 5
int main() {
int **ptr = (int **)malloc(sizeof(int *)*ROW);
for(int i=0; i<ROW; i++) {
*(ptr+i) = (int *)malloc(sizeof(int)*COL);
}
printf("%p\n", *(ptr+0));
printf("%p\n", *(ptr+1));
printf("%p\n", *(ptr+2));
printf("%p\n", *(ptr+3));
return 0;
}
100
0000 0df3 4325 1450
0000 0df3 4325 1470
0000 0df3 4325 1490
0000 0df3 4325 14b0
100
0000 0df3 4325 1450
0000 0df3 4325 1464
0000 0df3 4325 1478
0000 0df3 4325 148c