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

sac*_*hin 6 c++ windows

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

其他细节: - 可用总内存:4GB

操作系统:Windows XP

1.5 GB是这一过程使用的内存.

问候,

萨钦

Dam*_*mon 10

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

除非您激活了/ 3gb开关,否则总地址空间为2GB.但是,这减去了映射的可执行文件和至少六个DLL和NLS文件(对于"hello world" - 一个真正的应用程序可能更像是十几个或二十几个).

由于它们没有最佳放置,因此会损失大约半千兆字节的地址空间.堆不会"进入"该区域,因此分配超过1.5GB将失败.

以下是"典型程序"的地址空间:

在此输入图像描述

注意一个DLL放置在大约1/3的地址空间非常熟练,有效地"切断"你可以使用的三分之一的内存.