c++ - 3D 数组 C++ 太大了吗?如何使用 3D 数组?

标签 c++ arrays

我正在以这种方式制作 3D 阵列:

#define P 1000 int 

SPACE3D[P*2][P*2][P*2];

但我得到以下编译错误:

Error 1 error C2148: total size of array must not exceed 0x7fffffff bytes

我可以做些什么来避免这个错误吗?

我也试过像这样初始化 3D 数组:

int SPACE3D[P*2][P*2][P*2]={0};

这样我就没有构建错误,但是程序崩溃了。

有什么建议吗?

最佳答案

您需要使用 newmalloc() 在堆上创建数组,而不是像您正在做的那样在堆栈上创建数组。例如:

int* SPACE3D = new int[P*2*P*2*P*2];

现在您需要使用算术对其进行索引。如果您更喜欢更自然、或许更安全的界面,可以在标准库之外找到大量可用的矩阵类。但是,请不要使用 vector 的 vector ,因为如果您的矩阵实际上是矩形的(即不是锯齿状/稀疏的),那将是非常低效的。

关于c++ - 3D 数组 C++ 太大了吗?如何使用 3D 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22688981/

相关文章:

c++ - 如何强制 Thrift 只接受来自本地主机的连接

c++ - Qt + MSVC 2015 + Firebase SDK v1.0.0

c - 使用字符串读取数字

java - 我需要帮助来构建一个返回数组的方法

c - 为什么指针和数组不一样: Need justification on quote

objective-c - 合并或组合两个不同大小的数组并用 0 填充空白

c++ - 从包含 C++ 中的类名的字符串动态创建类的实例

c++ 2D数组错误

c++ - 为什么这个结构是用字段中已有的数据初始化的?

java - 为什么 "ig"重复两次?