基本概念
GlobalMemoryStatusEx是Windows系统中用于检索有关系统当前物理内存和虚拟内存使用情况信息的API函数,属于系统资源监控类API。它比早期的GlobalMemoryStatus功能更强大,支持检测超过4GB的内存(适用于64位系统和大内存场景),是现代Windows应用中获取内存信息的首选接口。
基本语法
1 2 3
| BOOL GlobalMemoryStatusEx( [in, out] LPMEMORYSTATUSEX lpBuffer );
|
LPMEMORYSTATUSEX
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| typedef struct _MEMORYSTATUSEX { DWORD dwLength; DWORD dwMemoryLoad; DWORDLONG ullTotalPhys; DWORDLONG ullAvailPhys; DWORDLONG ullTotalPageFile; DWORDLONG ullAvailPageFile; DWORDLONG ullTotalVirtual; DWORDLONG ullAvailVirtual; DWORDLONG ullAvailExtendedVirtual; } MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
DWORDLONG:typedef unsigned __int64 DWORDLONG; 无符号 64 位整数数据类型。
|
简单示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <windows.h> #include <stdio.h>
int main() { MEMORYSTATUSEX memInfo; memInfo.dwLength = sizeof(MEMORYSTATUSEX);
if (!GlobalMemoryStatusEx(&memInfo)) { printf("调用失败!错误码:%lu\n", GetLastError()); return 1; }
printf("=== 系统内存状态 ===\n"); printf("内存使用率:%lu%%\n", memInfo.dwMemoryLoad); printf("物理内存总量:%.2f GB\n", (double)memInfo.ullTotalPhys / (1024 * 1024 * 1024)); printf("可用物理内存:%.2f GB\n", (double)memInfo.ullAvailPhys / (1024 * 1024 * 1024)); printf("页面文件总量:%.2f GB\n", (double)memInfo.ullTotalPageFile / (1024 * 1024 * 1024)); printf("可用页面文件:%.2f GB\n", (double)memInfo.ullAvailPageFile / (1024 * 1024 * 1024)); printf("用户虚拟内存总量:%.2f GB\n", (double)memInfo.ullTotalVirtual / (1024 * 1024 * 1024)); printf("可用用户虚拟内存:%.2f GB\n", (double)memInfo.ullAvailVirtual / (1024 * 1024 * 1024));
return 0; }
|