gpt4 book ai didi

c++ - Qt5 内存轮询

转载 作者:行者123 更新时间:2023-12-02 10:24:28 28 4
gpt4 key购买 nike

我是新来的,所以如果我在错误的区域发帖或在我的问题中遗漏了一些信息,我深表歉意。 是否可以使用 Qt5 在 Windows 中轮询全局内存使用情况? 我搜索了Qt5 Classes我没有找到任何我认为符合要求的东西。为了更具体,我正在寻找类似于 GlobalMemoryStatusEx 的内容。 .

最佳答案

Qt 没有提供可移植的 API 来执行此操作,因为查询操作系统的内存使用情况确实是 。操作系统特定 任务。

但是,您可以写一个 包装 类,它根据您运行的操作系统使用正确的 API。

例如,在 Windows 上,您可以使用您已经提到的 API ( GlobalMemoryStatusEx ),而在 Linux 上,您可以使用 sysinfo API)。

一旦您确定了用于目标平台的 API,您可以使用 条件编译只为每个平台编译正确的代码,同时为外部世界提供相同的接口(interface)。

Qt 提供了一些定义( Q_OS_ ),它们的设置与否取决于目标操作系统。查看文档 here更多细节。

例子:

/*!
* \brief MemoryUsage::getMemoryUsage
* \return the overall memory usage in percent.
*/
int MemoryUsage::getMemoryUsage()
{
int result = 0;

#ifdef Q_OS_LINUX
struct sysinfo sys_info;

sysinfo(&sys_info);

unsigned long long total = sys_info.totalram *(unsigned long long)sys_info.mem_unit / 1024;
unsigned long long free = sys_info.freeram *(unsigned long long)sys_info.mem_unit/ 1024;

result = (total - free) * 100 / total;
#endif

#ifdef Q_OS_WIN
MEMORYSTATUSEX statex;
statex.dwLength = sizeof (statex);

GlobalMemoryStatusEx (&statex);

result = statex.dwMemoryLoad);
#endif

return result;
}

使用相同的技巧,您还必须确保包含正确的头文件(例如,在为 Linux 编译时不要包含)。

关于c++ - Qt5 内存轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49739690/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com