根据我的理解,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:
最值得注意的是它说:
内存和地址空间的限制因平台,操作系统以及LOADED_IMAGE结构的IMAGE_FILE_LARGE_ADDRESS_AWARE值和4千兆字节调整(4GT)是否正在使用而异.使用/ LARGEADDRESSAWARE链接器选项设置或清除IMAGE_FILE_LARGE_ADDRESS_AWARE.
另请参阅:http://msdn.microsoft.com/en-us/library/wz223b1z.aspx