多维数组动态分配的内存图

Memory diagram of dynamic allocation of Multidimensional Arrays

本文关键字:内存 动态分配 数组      更新时间:2023-10-16

以下是我所知道的动态分配多维数组的两种方法:

int (*numbers)[4] = new int[3][4]

int **numbers = new int*[3]; 

这两者在内存中表示同一件事吗?实际上,它们代表什么以及如何代表?(内存图真的很有帮助!

不,第一个将创建 12 个整数 (3*4),在内存中它们将按顺序布局。第二个创建 3 个指向整数的指针

即第一个将像这样布置

[1,2,3,4][5,6,7,8][9,10,11,12]

所以你有 3 个 4 个整数元素数组,第二个示例看起来更像

[0x12345678,0x12345678,0x12345678]

即,3 个指向整数的未初始化指针