windows对MEMORYSTATUS定义如下
typedef struct _MEMORYSTATUS
{
DWORD dwLength; // MEMORYSTATUS结构大小
DWORD dwMemoryLoad; // 已使用内存所占的百分比
DWORD dwTotalPhys; // 物理存储器的总字节数
DWORD dwAvailPhys; // 空闲物理存储器的字节数
DWORD dwTotalPageFile; // 页文件包含的最大字节数
DWORD dwAvailPageFile; // 页文件可用字节数
DWORD dwTotalVirtual; // 用户模式分区大小
DWORD dwAvailVirtual; // 用户模式分区中空闲内存大小
} MEMORYSTATUS, *LPMEMORYSTATUS;
获取内存信息的函数
VOID GlobalMemoryStatus(LPMEMORYSTATUS)传递一个MEMORYSTATUS结构指针从而将获取的信息填充在结构体中。
#include <stdio.h>
#include <windows.h>
void printMemInfo(LPMEMORYSTATUS pMem)
{
printf("TotalPage: %d MB\n",pMem->dwTotalPageFile>>10);
printf("AvilablePage: %d MB\n",pMem->dwAvailPageFile>>10);
printf("TotaPhy: %d MB\n",pMem->dwTotalPhys>>10);
printf("AvailPhys: %d MB\n",pMem->dwAvailPhys>>10);
printf("TotalVirtual: %d MB\n",pMem->dwTotalVirtual>>10);
printf("AvailVirtual: %d MB\n",pMem->dwAvailVirtual>>10);
printf("MemoryLoad: %d%%\n",pMem->dwMemoryLoad);
}
int main()
{
//printf("可用物理内存大小:%d Mb\n",getAvailableMemory()/1024);
MEMORYSTATUS mem;
GlobalMemoryStatus(&mem);
printMemInfo(&mem);
return 0;
}