C++ win32和linux獲取系統剩餘記憶體,
阿新 • • 發佈:2018-12-22
1使用的是qt ,可以更加自己需要的修改
linux 端使用 cat /proc/meminfo
可以看到
linux通過fget和sscanf讀取一行,獲得我們想要的MemAvaiable
2win32使用MEMORYSTATUSEX和GloablMemoryStatusEx讀取,需要標頭檔案windows.h
//windows 記憶體 使用率,檢視剩餘記憶體大小`
unsigned long long getAvailablePhysMemBytes()
{
static unsigned long long size = 0;
#ifdef Q_OS_WIN
if (size == 0) {
MEMORYSTATUSEX memoryInfo;
memoryInfo.dwLength = sizeof(memoryInfo);
GlobalMemoryStatusEx(&memoryInfo);
size = memoryInfo.ullAvailPhys;//)/1024/1024
qDebug()<<“win32 memory available:”;
return size;
}
#else Q_OS_UNIX
char name1[20]; //定義一個char型別的陣列名name有20個元素
unsigned long long MemTotal;
char name2[20];
unsigned long long MemFree;
char name3[20];
unsigned long long MemAvailable;
FILE *fd;
char buff[256];
fd = fopen("/proc/meminfo", "r"); fgets(buff, sizeof(buff), fd); sscanf(buff, "%s %lu ", name1, &MemTotal); fgets(buff, sizeof(buff), fd); sscanf(buff, "%s %lu ", name2, &MemFree); fgets(buff, sizeof(buff), fd); sscanf(buff, "%s %lu ", name3, &MemAvailable); //返回的是kb fgets(buff, sizeof(buff), fd); fclose(fd); //關閉檔案fd qDebug()<<"linux memory available:"; return MemAvailable*1024;
#endif
}