我正在尝试动态地分配一个大的4D矩阵。当我创建静态矩阵时,一切都正常,所以我知道现在我有足够的内存。但是,当我尝试动态实现相同的内容时,每当我进入第三个维度时都会出现问题,而我需要进入第四个维度!有人可以告诉我为什么这段代码不起作用吗?
#include <iostream>
using namespace std;
static const int time1 = 7;
static const int tlat = 15;
static const int tlon = 17;
static const int outlev = 3;
int main(void)
{
//allocate four dimensional dataIn
int ****dataIn;
dataIn = new int ***[time1];
if (dataIn == NULL) { return 1; }
for(int i = 0 ; i < time1 ; i++) {
dataIn[i] = new int **[tlat];
if (dataIn[i] == NULL) { return 1; }
for(int j = 0 ; j < tlat ; j++) {
dataIn[i][j] = new int *[tlon];
if (dataIn[i][j] == NULL) { return 1; }
for(int k = 0 ; k < tlon ; k++) {
dataIn[i][j][k] = new int[outlev];
if (dataIn[i][j][k] == NULL) { return 1; }
}
}
}
//there is more code that happens here to add values to dataIn
//and eventually output it but I know all of that works
return 0;
}
我已经尝试了许多不同的代码变体,甚至使用了 malloc 而不是 new,但我无法使其正常工作。任何帮助都将不胜感激。