我需要初始化一个非常大的多维std::array数据:
class Thing;
class World
{
public:
World() : space{nullptr} {};
~World() = default;
private:
static unsigned int const size = 1000;
std::array<std::array<std::array<std::unique_ptr<Thing>, size>, size>, size> space;
};
Run Code Online (Sandbox Code Playgroud)
如果你试图实例化它,G ++ 4.8.2扼杀:它消耗所有可用的内存,不会返回.也就是说,编译器挂起,我永远不会得到可执行文件. 为什么是这样? 请注意,clang ++没有问题.
注意:我完全意识到将这么多数据放在堆栈上会溢出它. 在堆上初始化它的最佳方法是什么? 我认为制作space一个引用(分配内存)是最好的方法,但我无法弄清楚语法.