我正在以这种方式制作 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};
这样我就没有构建错误,但是程序崩溃了。
有什么建议吗?
最佳答案
您需要使用 new
或 malloc()
在堆上创建数组,而不是像您正在做的那样在堆栈上创建数组。例如:
int* SPACE3D = new int[P*2*P*2*P*2];
现在您需要使用算术对其进行索引。如果您更喜欢更自然、或许更安全的界面,可以在标准库之外找到大量可用的矩阵类。但是,请不要使用 vector 的 vector ,因为如果您的矩阵实际上是矩形的(即不是锯齿状/稀疏的),那将是非常低效的。
关于c++ - 3D 数组 C++ 太大了吗?如何使用 3D 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22688981/