gpt4 book ai didi

将大对象放入集合时 C++ 堆栈溢出

转载 作者:太空宇宙 更新时间:2023-11-04 11:24:56 25 4
gpt4 key购买 nike

我正在创建一个基于 block 的引擎,我正在研究无限加载。我编辑了一些代码来实现 std::unordered_map。但是我遇到了堆栈溢出异常的问题。它太大了,不可能全部存储在堆栈中。它的大小是:CHUNK_SIZE(32)^3 * WORLD_HEIGHT(8 个 block 的高度)* 4( block 字节)= 1048576 字节。 (那个 * 225 构成了我的世界。)

我目前正在使用这段代码:(我猜是因为它是临时在堆栈上创建的?)。我应该如何实现?

for(int x = 0; x < size*size; x++){
loadedChunkContainers.emplace(std::make_pair(x, ChunkContainer()));
}

(我知道你可以用 new 在堆上分配它,但每个人总是告诉我不要这样做。)

最佳答案

就地构建那个庞大的大对象。
因此,不需要复制/移动,只需要最少的堆栈使用。

使用std::piecewise_construct :

for(int x = 0; x < size*size; x++)
loadedChunkContainers.emplace(std::piecewise_construct,
make_tuple(x), make_tuple());

关于将大对象放入集合时 C++ 堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27022608/

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