多维数组动态分配的内存图
Memory diagram of dynamic allocation of Multidimensional Arrays
以下是我所知道的动态分配多维数组的两种方法:
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 个指向整数的未初始化指针
相关文章:
- 对具有动态分配的内存和析构函数的类对象的引用
- 调用析构函数以释放动态分配的内存
- 在运行时为动态分配的内存输入值
- 释放动态分配的内存时是否需要执行此额外步骤
- 动态分配字符数组的内存
- 销毁C++中动态分配的内存(数组对象)
- 删除类成员的动态分配内存的最佳方法是什么
- 动态分配的内存构造函数
- 为什么动态分配的内存总是16字节对齐
- 如果您为类的一个对象动态分配内存作为参数,会发生什么
- 为什么动态分配的两个变量的内存位置不是连续的?
- 为浮点数组动态分配内存
- 动态分配 8 字节的内存
- 包含动态分配内存作为值的映射的取消定位速度有多快?
- STD分配器是否会在堆上动态分配内存?它可以安全地删除内存吗?
- 为什么不能在 Visual C++ 中动态分配堆栈内存?但海湾合作委员会可以做到
- 在C 中动态分配的内存的问题
- 为什么在 C++ 执行删除操作后仍可以访问释放的动态分配的内存
- 对内存动态分配的类不使用"*"的逻辑
- 如果我将内存动态分配给静态变量,我应该释放它还是会自动释放它