如何使用C++获取Windows系统的RAM使用率百分比
Windows C++ 获取内存使用率百分比解决方案
现有代码问题
你当前的代码存在两个核心错误:
- 未调用
GlobalMemoryStatusEx系统API填充MEMORYSTATUSEX结构体,直接读取的成员均为未初始化的无效值 - 缺少百分比计算逻辑,仅返回了已用内存的绝对值
可行实现方案
你可以选择两种方式计算内存使用率:
- 直接使用
MEMORYSTATUSEX结构体自带的dwMemoryLoad字段,该字段是系统预计算的0-100整数百分比,无需手动计算 - 自行通过总内存和可用内存的比值计算,可自定义保留小数精度
完整实现代码
#include <windows.h> #include <string> #include <iomanip> #include <sstream> std::string getRamUsage() { MEMORYSTATUSEX memInfo; memInfo.dwLength = sizeof(MEMORYSTATUSEX); // 调用系统API获取内存状态 if (!GlobalMemoryStatusEx(&memInfo)) { return "0.0"; // 调用失败可自定义错误处理逻辑 } // 方案1:直接使用系统计算好的整数百分比 // return std::to_string(memInfo.dwMemoryLoad) + "%"; // 方案2:手动计算,保留1位小数精度,可按需调整 double usagePercent = (static_cast<double>(memInfo.ullTotalPhys - memInfo.ullAvailPhys) / static_cast<double>(memInfo.ullTotalPhys)) * 100; std::ostringstream oss; oss << std::fixed << std::setprecision(1) << usagePercent << "%"; return oss.str(); }
注意事项
- 该API属于Windows系统原生API,包含
windows.h即可使用,无需额外链接第三方库 - 若不需要百分号后缀,删除字符串拼接的
"%"即可
内容的提问来源于stack exchange,提问作者PlayZ Bhai
相关产品推荐
相关产品推荐

