一旦内存使用量达到 1.5 GB,C++ 应用程序就会崩溃 [关闭]

2024-03-18

我们有一个在 Windows 32 位系统上运行的 C++ 应用程序。一旦内存使用量达到 1.5 GB,就会崩溃。我们无法理解的是为什么它在 1.5 GB 限制而不是 2 GB 限制(虚拟地址空间和 Windows 32 位架构限制)时崩溃?

其他详情:- 可用总内存:4GB

操作系统:Windows XP

1.5 GB 是这一进程所使用的内存。

Regards,

Sachin


这在 32 位 Windows 下是完全正常的。

除非您激活了 /3gb 开关,否则您的总地址空间为 2GB。然而,那就是minus映射的可执行文件和至少六个 DLL 和 NLS 文件(对于“hello world”——真正的应用程序可能有十几个或两打)。

由于它们的放置位置不理想,因此您会损失大约半千兆字节的地址空间。堆不会增长到“进入”该区域,因此分配超过 1.5GB 的空间将会失败。

“典型程序”的地址空间如下所示:

请注意,一个 DLL 非常巧妙地放置在大约 1/3 地址空间的位置,有效地“切断”了您可以使用的三分之一的内存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一旦内存使用量达到 1.5 GB,C++ 应用程序就会崩溃 [关闭] 的相关文章

随机推荐