【发布时间】:2017-10-15 16:21:52
【问题描述】:
我正在学习c++,在书中找到了这个
array_ptr = new int[3][5][4];
这用于使用 new 为多维数组分配内存。它还指出,虽然第一维可以是在运行时提供其值的变量,但其他维度必须是常量。 我试图运行这段代码
int *p = new int[3][5][6];
但它显示错误。 谁能详细说明一下。
【问题讨论】:
-
扔掉那本书,换成something saner。
-
无论如何,不要将错误消息复制到您的问题中。人们实际上可能会告诉您错误消息意味着
int*和int (*)[5][6]之间存在类型不匹配。 -
@FRob 你为什么这么沮丧,冷静点
-
这是一个 C 答案,但就原始数组的工作方式而言,它也适用于 C++:Correctly allocating multi-dimensional arrays。请用它来打击所有喋喋不休的指针到指针到指针的人......
-
@HolyBlackCat 这本书显然教指针摆弄和手动内存管理,这是困难和不必要的。说明作者不了解相关编码实践或不在意。我可能有点草率,这本书实际上说明了为什么不马上做这样的事情,或者只是作为一个旁注,但很可能它是由一个认为 C++ 基本上是 C 的作者写的,基本上是 fortran。由于不幸的是,这很常见并且对后来的学习和能力造成很大损害,所以我觉得有必要提出替代方案。
标签: c++ multidimensional-array new-operator dynamic-memory-allocation