如何获取以下信息:
- 总内存
- 可用内存
- 当前运行应用程序使用的内存?
我认为Qt应该有内存选项,可以实现跨平台,但是我找不到它。那么,当我想要制作一个显示内存状态的跨平台应用程序时,我该怎么做呢?
MEMORYSTATUSEX memory_status;
ZeroMemory(&memory_status, sizeof(MEMORYSTATUSEX));
memory_status.dwLength = sizeof(MEMORYSTATUSEX);
if (GlobalMemoryStatusEx(&memory_status)) {
system_info.append(
QString("RAM: %1 MB")
.arg(memory_status.ullTotalPhys / (1024 * 1024)));
} else {
system_info.append("Unknown RAM");
}
Linux (/proc/meminfo)
QProcess p;
p.start("awk", QStringList() << "/MemTotal/ { print $2 }" << "/proc/meminfo");
p.waitForFinished();
QString memory = p.readAllStandardOutput();
system_info.append(QString("; RAM: %1 MB").arg(memory.toLong() / 1024));
p.close();
QProcess p;
p.start("sysctl", QStringList() << "kern.version" << "hw.physmem");
p.waitForFinished();
QString system_info = p.readAllStandardOutput();
p.close();
在POSIX操作系统上(如Linux,Solaris和最新的MacOS...)表现更佳:
在POSIX计算机上有许多宝藏,在Windows上不可用。
在Qt中目前无法实现这一点。您需要使用不同的操作系统内存调用进行条件编译。