根据我的理解,32位进程只能在没有/ 3GB开关的情况下在32位窗口上访问2GB内存,并且操作系统会根据自己的恶魔原因占用部分内存.这似乎与我的经验相吻合,因为我们有一个应用程序崩溃,当它达到大约1.2-1.5 GB的内存异常,即使仍然有足够的可用内存.
我的问题是,将这个32位应用程序移动到64位窗口是否允许它现在可以访问超过1.5GB左右的内存?或者应用程序本身是否必须升级到64位?
较新版本的Visual Studio有一个新标志,使32位应用程序“具有大地址空间感知”.基本上它的作用是说如果它加载到64位版本的Windows上,那么它将获得4GB(32位指针的限制).这肯定比你在32位版本的Windows上获得的2或3 GB更好.见
http://msdn.microsoft.com/en-us/library/aa366778.aspx:
最值得注意的是它说:
Limits on memory and address space
vary by platform,operating system,
and by whether the
IMAGE_FILE_LARGE_ADDRESS_AWARE value
of the LOADED_IMAGE structure and
4-gigabyte tuning (4GT) are in use.
IMAGE_FILE_LARGE_ADDRESS_AWARE is set
or cleared by using the
/LARGEADDRESSAWARE linker option.