GlobalMemoryStatusEx()将总虚拟内存为127 TeraByte

时间:2017-09-21 06:10:52

标签: c++ windows memory

为什么GlobalMemoryStatusEx()提供了巨大的总虚拟内存。它是否考虑了可以创建的所有页面文件?

系统详情:

Windows 8.1,64位进程,x64处理器

int main()
{
    MEMORYSTATUSEX mex;
    mex.dwLength = sizeof (mex);

    GlobalMemoryStatusEx(&mex);
    std::cout<<mex.ullTotalVirtual<<" "<<mex.ullAvailVirtual;
}
  

140737488224256 140737478111232

编辑:

我在Windows 10上得到了相同的结果。我很想知道这个127 TB数字是如何出现的。为什么系统没有考虑到我的磁盘上没有127 tb空间?

(x64系统)上的32位进程仅显示2gb,这是用户模式的32位进程的可访问地址限制。为什么在32位进程的情况下不考虑页面文件?

1 个答案:

答案 0 :(得分:0)

是。来自MSDN

  

您可以使用GlobalMemoryStatusEx()来确定应用程序可以分配多少内存而不会严重影响其他应用程序。