如何在C++中使用GetProcessMemoryInfo?

Asl*_*986 12 c++ winapi memory-management

我试图使用功能GetProcessMemoryInfopsapi.hC++应用程序内部的Windows 7 32位.

我按照一些教程,做了类似的事情:

PPROCESS_MEMORY_COUNTERS pMemCountr;

pMemCountr = new PROCESS_MEMORY_COUNTERS();
bool result = GetProcessMemoryInfo(GetCurrentProcess(),
                                   pMemCountr,
                                   sizeof(PPROCESS_MEMORY_COUNTERS));
Run Code Online (Sandbox Code Playgroud)

问题是我总是从执行GetProcessMemoryInfo()方法中获得"假" .我在这做错了什么?

sha*_*oth 21

问题是

sizeof(PPROCESS_MEMORY_COUNTERS)
Run Code Online (Sandbox Code Playgroud)

产生的大小PPROCESS_MEMORY_COUNTERS是一个PROCESS_MEMORY_COUNTERS*类型指针(P在开头注意两倍).

你想要的是什么

sizeof(PROCESS_MEMORY_COUNTERS)
Run Code Online (Sandbox Code Playgroud)

如果没有new这里你会好得多:

PROCESS_MEMORY_COUNTERS memCounter;
BOOL result = GetProcessMemoryInfo(GetCurrentProcess(),
                                   &memCounter,
                                   sizeof( memCounter ));
Run Code Online (Sandbox Code Playgroud)

  • 一个很好的理由为什么你应该总是使用变量的名称作为 `sizeof` 运算符的参数,而不是类型名称。 (2认同)