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
}