获取内存信息如何获得这样的信息:通过当前正在运行的应用程序所使用使用Qt
- 总内存
- 可用内存
- 记忆?
我认为Qt应该有内存选项,这将是平台无关的,但我无法找到它 。那么当我想创建一个显示内存状态的独立于平台的应用程序时,我该怎么办?
获取内存信息如何获得这样的信息:通过当前正在运行的应用程序所使用使用Qt
我认为Qt应该有内存选项,这将是平台无关的,但我无法找到它 。那么当我想创建一个显示内存状态的独立于平台的应用程序时,我该怎么办?
不幸的是,Qt没有内置任何内容。您必须按平台完成此操作。
下面是一些示例以帮助您入门。就在上周我必须在我的一个应用程序中实现这一点。下面的代码仍然在开发中;可能存在错误或泄漏,但它至少可以指导您正确的方向。我只对整个物理RAM感兴趣,但其他值也可以用相同的方法获得。 (也许除了使用内存的当前应用程序......不知道这一点的。)
的Windows(GlobalMemoryStatusEx)
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();
Mac(sysctl)
QProcess p;
p.start("sysctl", QStringList() << "kern.version" << "hw.physmem");
p.waitForFinished();
QString system_info = p.readAllStandardOutput();
p.close();
这是目前在Qt中不可能的。您将需要ifdef不同的操作系统内存调用。
对POSIX操作系统(Linux,Solaris和最新也许MacOS的...)好多了:
这么多宝物上没有POSIX电脑在Windows上。
http://stackoverflow.com/questions/27201876/memory-management-issue-with-deleting-qquickview-in-qt5-3mingw32/27203897#27203897 – dtech