我尝试在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
感谢您的帮助。
答案 0 :(得分:4)
根据文档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
也被填充。
答案 1 :(得分:0)
我没有足够的声誉来发表评论。我提供的信息数量有限。我会尽力指导你在鞋子里做的事情。
您提到的过程不适用于使用mingw32的Qt。它适用于视觉工作室。