我正在用 C++ 设计一个类似于 Minecraft 的游戏,它在内存中保存了大量的地形数据。一般来说,我想将一个数组存储在 [5][4][5][50][50][50] 的内存中。这还不错,因为它相当于大约 100mb 的虚拟内存,因为我的结构只有大约 8 个字节。
但是,我无法找出处理此问题的最佳方法。我确实希望它在虚拟内存中,但显然不在堆栈中。而且我一直在犯一些如何在堆栈上创建这个数组并导致堆栈溢出的错误。我想做的是下面。这只是我拼凑在一起的代码,为您提供了我正在做的事情的示例,我的机器上有语法正确的代码,我只是不想弄乱帖子。
typedef struct modelBlock
{
// Information about the blocks
} BLOCK;
typedef struct modelGrid
{
bool empty;
BLOCK blocksArray[50][50][50];
} GRID;
class Parent
{
Child* child;
Parent(void);
}
Parent::Parent()
{
Child c;
child = &c;
}
class Child
{
GRID grids[5][4][5];
}
但是,每次我这样做时,都会导致堆栈溢出(适当的网站选择对吗?)。我玩过使用基于指针的数组,但是数据在其范围之外丢失时遇到了很多麻烦。
如果有人能给我一些关于如何让我的数据存储在堆而不是堆栈上的见解,或者如果我应该使用其他方式来创建我的数组,我将非常感谢您的帮助。由于开销,我想避免使用向量,但我不确定它有多大。