Visual c++ 如何获得正确的物理内存和虚拟内存

Visual c++ 如何获得正确的物理内存和虚拟内存,visual-c++,Visual C++,我使用这个windows API, GlobalMemoryStatusEx以获取内存信息 我的电脑总物理内存是4096MB,为什么程序显示3.XG 我的电脑的虚拟内存是3063MB,但我使用的程序显示的是2047MB 我的开发环境是VisualStudio2008 如何修改这个问题 谢谢其他程序也在使用您的系统吗?我怀疑您“丢失”的内存是由于操作系统本身以及您正在运行的任何其他程序造成的。查看打开一组其他应用程序是否会改变程序能够看到的虚拟内存大小。假设您运行的是32位版本的windows,那

我使用这个windows API, GlobalMemoryStatusEx以获取内存信息 我的电脑总物理内存是4096MB,为什么程序显示3.XG 我的电脑的虚拟内存是3063MB,但我使用的程序显示的是2047MB 我的开发环境是VisualStudio2008 如何修改这个问题


谢谢

其他程序也在使用您的系统吗?我怀疑您“丢失”的内存是由于操作系统本身以及您正在运行的任何其他程序造成的。查看打开一组其他应用程序是否会改变程序能够看到的虚拟内存大小。

假设您运行的是32位版本的windows,那么这就是windows本身的限制。有关详细信息,请参阅此Microsoft页面。默认情况下,您只能在单个进程中访问2GB的RAM。VisualStudio中有一个编译器开关,可以让您访问3GB。这是/LargeAddressware开关。除此之外,您只需升级到64位操作系统


顺便说一句,您不能自动获得4GB地址空间的基本原因是因为它的一部分是为操作系统保留的。那些系统调用和对操作系统资源的引用必须存在于某个地方。

您正在运行什么操作系统?32位版本的Windows无法处理全部4GB的RAM,因为地址空间中还需要其他可用的东西。请看,我的操作系统是windows 7 32位,但使用cpu-z可以获得4GB RAM