gpt4 book ai didi

c++ - bad_alloc 即使我有很多可用内存

转载 作者:行者123 更新时间:2023-11-27 23:56:36 25 4
gpt4 key购买 nike

我正在尝试递归地 segmentation 球体以在面上实现球面小波算法。虽然我有 8 GB 的可用内存,但我只能将二十面体 segmentation 为 9 个级别。我的问题是在构建我的球体时内存不足和 bad_alloc 异常,即使我有足够的内存可用。

我认为我会达到 Win32 应用程序 4 GB 的限制,因为我会用完可寻址内存指针。但如您所见,我达到了大约 1.9 GB 的限制。

此错误与使用的系统无关。

Out of Memory (Screenshot)

有人知道发生了什么以及如何处理这类问题吗?

最佳答案

您永远无法分配到 4GB,因为这是 32 位进程的全部可用内存空间。这包括代码和其他数据,其中将有一些支持(例如)运行时库和堆栈,即使您的可执行文件没有分配其他 block 也是如此。

在 Windows 上,您只能通过将二进制文件与 LARGEADDRESSAWARE 链接来分配超过 2GB 的空间。旗帜。 MSDN 文档中有简短的说明信息。

可以通过将应用程序构建为 64 位可执行文件来避免此限制,假设您只能针对 64 位 Windows 机器。

有更多关于给定 Windows 版本内存限制的背景 here .如果您坚持使用 32 位,PAE 可能会有用。

关于c++ - bad_alloc 即使我有很多可用内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42250693/

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