我尝试在 Qt 5.5 中通过本教程获取“当前进程当前使用的物理内存”:How to get system cpu/ram usage in c++ on Windows 当我尝试将此功能添加到我的应用程序时,出现错误...
PROCESS_MEMORY_COUNTERS_EX pmc;
GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc)); // error C2664
SIZE_T physMemUsedByMe = pmc.WorkingSetSize;
错误:
C2664: 'BOOL K32GetProcessMemoryInfo(HANDLE,PPROCESS_MEMORY_COUNTERS,DWORD)' : cannot convert argument 2 from 'PROCESS_MEMORY_COUNTERS_EX *' to 'PPROCESS_MEMORY_COUNTERS'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
感谢您的帮助。
最佳答案
根据文档GetProcessMemoryInfo可以接受指向 PROCESS_MEMORY_COUNTERS
或 PROCESS_MEMORY_COUNTERS_EX
的指针。最新类型包含一个附加字段。
它可能取决于 SDK 版本,但在我的头文件 psapi.h
中,此函数仅使用指向 PROCESS_MEMORY_COUNTERS
的指针声明。因此,扩展结构版本编译失败。
两种解决方案都有效:
// use only PROCESS_MEMORY_COUNTERS structure
PROCESS_MEMORY_COUNTERS pmc;
// or cast structure type
PROCESS_MEMORY_COUNTERS_EX pmc;
GetProcessMemoryInfo(GetCurrentProcess(),
reinterpret_cast<PPROCESS_MEMORY_COUNTERS>(&pmc), sizeof(pmc));
Sinse GetProcessMemoryInfo
也有结构大小作为参数,扩展结构 PROCESS_MEMORY_COUNTERS_EX
也被填充。
关于c++ - 在 Qt 中获取 "Physical Memory currently used by current process"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32787912/