我正在编写代码,使用C ++中的psapi.h查找当前进程的虚拟内存。我的代码如下

#include "windows.h"
#include "psapi.h"

PROCESS_MEMORY_COUNTERS_EX pmc;
GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc));
SIZE_T virtualMemUsedByMe = pmc.PrivateUsage;


现在这是我的问题,当我在vs2012 Ultimate中编写此代码并编译时,编译器告诉我


  无法从PROCESS_MEMORY_COUNTERS_EX *转换为PPROCESS_MEMORY_COUNTER


我不知道该怎么办。请帮忙。感谢您的帮助。

最佳答案

您需要强制转换参数。当扩展结构参数指针时,这在Windows API中并不罕见。

您还需要检查返回值和返回的结构大小:

PROCESS_MEMORY_COUNTERS_EX pmc;
if (GetProcessMemoryInfo(GetCurrentProcess(), (PROCESS_MEMORY_COUNTERS*) &pmc, sizeof(pmc)) && pmc.cb >= sizeof(pmc))
{
  SIZE_T virtualMemUsedByMe = pmc.PrivateUsage;
  // use virtualMemUsedByMe here
}

关于c++ - GetProcessMemoryInfo错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44339782/

10-10 19:28