You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C++获取Windows系统的RAM使用率百分比

Windows C++ 获取内存使用率百分比解决方案

现有代码问题

你当前的代码存在两个核心错误:

  • 未调用GlobalMemoryStatusEx系统API填充MEMORYSTATUSEX结构体,直接读取的成员均为未初始化的无效值
  • 缺少百分比计算逻辑,仅返回了已用内存的绝对值

可行实现方案

你可以选择两种方式计算内存使用率:

  1. 直接使用MEMORYSTATUSEX结构体自带的dwMemoryLoad字段,该字段是系统预计算的0-100整数百分比,无需手动计算
  2. 自行通过总内存和可用内存的比值计算,可自定义保留小数精度

完整实现代码

#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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:45:05