【发布时间】:2015-09-24 04:52:13
【问题描述】:
我需要在堆上存储一个数组,因为我在运行程序时遇到了段错误,因为它太大了。通常这很容易,但在这种情况下,它是一个多维数组(特别是 3D),它也是一个可变长度数组。
我尝试将这个答案用于 2D 数组(我很确定它有效,因为我在 SO 的另一个答案中找到了它)适合 3D 数组
int **ary = new int*[sizeY];
for(int i = 0; i < sizeY; ++i) {
ary[i] = new int[sizeX];
}
通过这样做:
double **isoarray = new double*[nBinsX];
for(int xi = 0; xi < nBinsX; ++xi){
isoarray[xi] = new double[nBinsY];
for(int yi = 0; yi < nBinsY; ++yi){
isoarray[xi][yi] = new double[nShuffles];
}
}
我应该提到该数组的维度是 nBinsX x nBinsY x nShuffles,但它不起作用,老实说我也不认为它会起作用。任何人都可以就我将如何做到这一点提出建议吗?提前致谢!
【问题讨论】:
-
你不需要三指针吗?一维数组的一级指针;二维数组的两级指针;还有……让我们想想……哦,3D 数组可能有三个层次?
标签: c++ heap-memory variable-length-array