1,涉及API
GlobalMemoryStatusEx 原型:
BOOL WINAPI GlobalMemoryStatusEx(
_Inout_ LPMEMORYSTATUSEX lpBuffer
);
MEMORYSTATUSEX结构存储了系统物理内存和虚拟内存的一些值。
声明如下:
typedef struct _MEMORYSTATUSEX {
DWORD dwLength;
DWORD dwMemoryLoad;
DWORDLONG ullTotalPhys; //总物理内存(单位:字节)
DWORDLONG ullAvailPhys; //可用物理内存
DWORDLONG ullTotalPageFile;
DWORDLONG ullAvailPageFile;
DWORDLONG ullTotalVirtual;
DWORDLONG ullAvailVirtual;
DWORDLONG ullAvailExtendedVirtual;
} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
2,使用
下面是获取物理内存的代码示例:
//得到内存总大小(单位MB)
ULONG GetTotalMemorySize()
{
MEMORYSTATUSEX statex;
statex.dwLength = sizeof(statex);
GlobalMemoryStatusEx(&statex);
return (ULONG)((statex.ullTotalPhys)/(1024*1024));
}
//得到可用内存大小(单位MB)
ULONG GetAvailMemorySize()
{
MEMORYSTATUSEX statex;
statex.dwLength = sizeof(statex);
GlobalMemoryStatusEx(&statex);
return (ULONG)((statex.ullAvailPhys)/(1024*1024));
}
同样,使用 ullTotalVirtual,ullAvailVirtual 可得到虚拟内存的值。