我认为32位进程最多可以使用2GB RAM,因为一半的地址空间是为操作系统保留的(可能是3GB的/ 3GB开关)。然而,星际争霸II设法使用近4GB,它是一个32位的EXE。 Process Explorer显示:
4,000,896 KB private bytes
3,928,164 KB working set
它是如何做到的,我怎么能在自己的程序中做到这一点?在.NET中有可能吗?在非托管C ++中?在托管C ++中以某种方式?
答案 0 :(得分:2)
在64位OS上,32位进程可以使用近4GB。
标记为“大地址空间感知”的进程在32位操作系统中最多可使用3GB,在64位操作系统上最多可使用完整地址空间。
以下是对此的更多讨论:Can a 32bit process access more memory on a 64bit windows OS?。