我们有一个在 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(使用前将#替换为@)