GlobalMemoryStatusEx() 提供的总虚拟内存为 127 TB

GlobalMemoryStatusEx() gives total virtual memory as 127 TeraByte

本文关键字:虚拟内存 TB GlobalMemoryStatusEx      更新时间:2023-10-16

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

系统详细信息:

视窗 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 位进程的情况下它不考虑页面文件?

是的。从 MSDN:

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