Вычисление памяти, занимаемой программой в Windows
В просторах сети много советов использовать GetProcessMemoryInfo из psapi.h. Я сделал работающий пример на Qt5/C++, вот часть кода:
void Dialog::PrintMemoryInfo() {
HANDLE hProcess = GetCurrentProcess();
PROCESS_MEMORY_COUNTERS_EX pmce;
if (hProcess) {
if (GetProcessMemoryInfo(hProcess, (PROCESS_MEMORY_COUNTERS *)&pmce, sizeof(pmce))) {
qDebug() << "PageFaultCount:" << pmce.PageFaultCount;
qDebug() << "PeakWorkingSetSize:" << pmce.PeakWorkingSetSize;
qDebug() << "WorkingSetSize:" << pmce.WorkingSetSize;
qDebug() << "QuotaPeakPagedPoolUsage:" << pmce.QuotaPeakPagedPoolUsage;
qDebug() << "QuotaPagedPoolUsage:" << pmce.QuotaPagedPoolUsage;
qDebug() << "QuotaPeakNonPagedPoolUsage:" << pmce.QuotaPeakNonPagedPoolUsage;
qDebug() << "QuotaNonPagedPoolUsage:" << pmce.QuotaNonPagedPoolUsage;
qDebug() << "PagefileUsage:" << pmce.PagefileUsage;
qDebug() << "PeakPagefileUsage:" << pmce.PeakPagefileUsage;
qDebug() << "PrivateUsage:" << pmce.PrivateUsage;
}
}
}
Получаю вот такой вывод:
PageFaultCount: 14558
PeakWorkingSetSize: 35176448
WorkingSetSize: 24408064
QuotaPeakPagedPoolUsage: 224408
QuotaPagedPoolUsage: 222664
QuotaPeakNonPagedPoolUsage: 17784
QuotaNonPagedPoolUsage: 17648
PagefileUsage: 17682432
PeakPagefileUsage: 17682432
PrivateUsage: 17682432
А в "Диспетчере Задач" вижу совсем другую цифру: 7.6MБ
Вопрос: как мне программно получить эти 7.6MБ?