C++ win32和linux获取系统剩余内存,

1使用的是qt ,可以更加自己需要的修改
linux 端使用 cat /proc/meminfo
可以看到
图片中的MemTotal和MemFree和MemAvailable,是我们最关心的,其中MemFree和MemAvailable,有点区别
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
}

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值