gpt4 book ai didi

c++ - 在 Qt 中获取 "Physical Memory currently used by current process"错误

转载 作者:行者123 更新时间:2023-11-30 01:46:41 25 4
gpt4 key购买 nike

我尝试在 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_COUNTERSPROCESS_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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com