我们有一个在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的地址空间非常熟练,有效地"切断"你可以使用的三分之一的内存.
| 归档时间: |
|
| 查看次数: |
2952 次 |
| 最近记录: |