gpt4 book ai didi

c++ - bad_alloc 的详细信息?

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:44 27 4
gpt4 key购买 nike

我从事一个游戏项目。最近,我们遇到了一个问题,当我们加载/卸载不同的场景大约 3 次时,我们捕获了“bad_alloc”异常。

每次加载场景时,我们首先将压缩的 .zip 文件夹加载到内存中,然后从中提取游戏对象。由于我们没有任何内存分析器工具,我只是使用 Process Explorer 的性能图来查看发生了什么:

  1. 运行游戏 ==> ~620 MB
  2. 加载第一个场景 ==> ~1.1 GB
  3. 卸载 ==> ~620 MB
  4. 加载第二个场景 ==> ~1.1 GB
  5. 卸载 ==> ~620 MB
  6. 加载第三个场景 ==> bad_alloc

我追踪到每个负载的新运算符(operator)。加载压缩文件夹本身需要 100~120 MB 内存,并且在第 3 次加载时从中抛出 bad_alloc。

我们的平台安装了 2GB 物理内存。似乎我们在卸载场景后没有留下任何东西。每个压缩文件夹的大小大致相同。但是,第三次加载的新运算符不起作用。

我想知道,这个 bad_alloc 可能是什么意思?内存不足?或者根本无法分配所需大小的连续 block ?如果确实有多种可能性,我该如何确定呢?

感谢任何帮助,谢谢!

最佳答案

如果您一次分配所有内存(只有一个 new),可能是堆过于碎片化,无法找到足够的连续内存来分配您请求的内容。

这可以通过按部分分配新场景来解决。

关于c++ - bad_alloc 的详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2171047/

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