相关疑难解决方法(0)

初始化大型std :: arrays时编译器挂起

我需要初始化一个非常大的多维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一个引用(分配内存)是最好的方法,但我无法弄清楚语法.

c++ arrays c++11

6
推荐指数
1
解决办法
590
查看次数

标签 统计

arrays ×1

c++ ×1

c++11 ×1