【发布时间】:2019-01-11 07:25:06
【问题描述】:
我在某处看到以下代码,我有点困惑。
int**** m_ppppCoder;
m_ppppCoder = new int ***[10];
这是一个动态分配的 3 维 int 数组吗?有人能准确解释一下,它是如何工作的吗?
阅读cmets后补充:上面的声明本身并不是一个完整的3d int数组,而是数组创建第一步的声明结构。据此,使用下面的代码,您可以动态创建一个 3d 数组。对吗?
m_ppppCoder[0] = new int **[10];
m_ppppCoder[0][0] = new int *[10];
m_ppppCoder[0][0][0] = new int[10];
在这种情况下,实际的数据如何在内存中按顺序排列(分配)?
【问题讨论】:
-
这表明你应该远离这样的代码。
-
FWIW,代码创建了一个包含 10 个指针的数组。每个指针的类型是
int***。这可能是一些多维数组的开始,但目前它只是一个指针数组。 -
它有什么作用?它让任何理智的程序员头晕目眩
-
如果你有5分钟的空闲时间,我刚刚为你录制了a video answer!
标签: c++ arrays memory memory-management new-operator