gpt4 book ai didi

二维数组的 C++ Visual Studio 堆栈溢出

转载 作者:可可西里 更新时间:2023-11-01 17:08:04 27 4
gpt4 key购买 nike

我正在使用 Visual Studio 2010 Win 8。我有一个类,我正在制作一个二维数组来保存游戏的游戏数据。

创建一个空白的控制台应用程序并制作 main.cpp 并添加此代码。将 360 用于 MAP_SIZE 会导致堆栈溢出,而使用 359 则不会。为什么会这样?我希望有一个更大的数组。理想情况下,我想要 2000 - 10,000。

#define MAP_SIZE 360

typedef unsigned short ushort;
typedef unsigned long ulong;

struct Tile
{
ushort baseLayerTileID;
ulong ownerID;
};

class Server
{
private:
Tile _map[MAP_SIZE][MAP_SIZE];
};


int main()
{
Server s;

return 0;
}

最佳答案

我估计 sizeof(Tile) 为 8 或更多。这意味着 sizeof(Server) 至少为 360*360*8 = 1036800,即 0.99 MB。堆栈通常很小,1MB 是常见的默认大小。您应该改为在堆上分配图 block ,也许使用 std::vector

class Server
{
public:
Server() : _map(MAP_SIZE * MAP_SIZE) {}
private:
std::vector<Tile> _map; // position [i][j] is at [i*MAP_SIZE+j]
};

关于二维数组的 C++ Visual Studio 堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13977989/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com