C ++ C2040:'阻止***'间接水平(和记忆辅助)

时间:2016-09-17 03:32:45

标签: c++ pointers memory heap allocation

我没有找到足够的信息来帮助我解决问题,但我看了很多地方。基本上,我想要一个16 * 16 * 256个类的三维数组。这导致堆栈溢出,所以我尝试了一个向量但是也崩溃了。最后,我试图通过三指针,双指针和单指针分配堆内存。

/* Values chunkX, chunkY, chunkZ used below are static constant integers*/
Block*** blocks;
blocks = new Block**[chunkX];
for (int i = 0; i < chunkX; i++) {//Initialize all arrays
    blocks[i] = new Block*[chunkZ];
    for (int u = 0; u < chunkZ; u++) {
        blocks[i][u] = new Block[chunkY];
    }
}

这对我有意义但可能不正确。 C2040 错误位于首次定义 blocks 的行。

稍后在代码中,我尝试:

Block& block = blocks[x][z][y];

但它告诉我 C2530 &#39;阻止&#39;:引用必须初始化 ...即使我在上面初始化它们?然后它因为这两个错误而停止编译。我很困惑,无法使用 new 找到任何三指针教程。我不认为我想要的内存量是不合理的,因为Block类并不是很大。

编辑(解决): 显然这不是代码问题,而只是编译器的问题。它现在编译而不做任何更改。感谢您的评论,并对给您带来的不便表示歉意。

0 个答案:

没有答案