Windows通过GlobalMemoryStatusEx获取ullTotalPhys字段;2. Linux读取/proc/meminfo解析MemTotal值;3. 跨平台使用预处理器指令封装,统一返回内存大小。

在C++中获取系统的物理内存大小,可以通过调用操作系统提供的API来实现。不同平台(如Windows和Linux)提供了各自的接口来查询系统硬件信息,包括物理内存容量。以下是针对主流操作系统的具体实现方法。
Windows平台获取物理内存
在Windows系统中,可以使用GlobalMemoryStatusEx函数来获取详细的内存信息。
使用步骤如下:
包含头文件windows.h>声明MEMORYSTATUSEX结构体并初始化调用GlobalMemoryStatusEx填充数据从结构体中提取ullTotalPhys字段,即为物理内存总字节数
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include #includeint main() {MEMORYSTATUSEX memInfo;memInfo.dwLength = sizeof(MEMORYSTATUSEX);if (GlobalMemoryStatusEx(&memInfo)) {unsigned long long totalMem = memInfo.ullTotalPhys / (1024 * 1024); // 转换为MBstd::cout << "物理内存: " << totalMem << " MB" << std::endl;}return 0;}
Linux平台获取物理内存
在Linux系统中,系统内存信息可通过读取/proc/meminfo文件获得。该文件以文本形式列出各项内存指标。
关键字段是MemTotal:,表示物理内存总量,单位为KB。
实现方式:
打开并读取/proc/meminfo查找包含MemTotal的行解析出数值并转换为需要的单位
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include #include #includeint main() {std::ifstream file("/proc/meminfo");std::string line;while (std::getline(file, line)) {if (line.find("MemTotal") != std::string::npos) {int memMB = 0;sscanf(line.c_str(), "MemTotal: %d kB", &memMB);std::cout << "物理内存: " << memMB / 1024 << " MB" << std::endl;break;}}return 0;}
跨平台封装建议
若需编写跨平台代码,可结合预处理器指令区分系统环境。
例如:
#ifdef _WIN32 // 使用 GlobalMemoryStatusEx#elif __linux__ // 读取 /proc/meminfo#endif
这样可以在不同系统上自动选择合适的实现方式,提升代码可移植性。
基本上就这些。根据目标平台选择对应方法,就能准确获取物理内存大小。注意单位转换,避免误读数据。
以上就是C++如何获取系统的物理内存大小_C++系统信息获取与物理内存查询的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1484568.html
微信扫一扫
支付宝扫一扫