C++获取当前进程物理内存占用量
时间: 2024-12-19 12:24:57 浏览: 10
在C++中,要获取当前进程的物理内存占用量,可以使用Windows API中的`GetProcessMemoryInfo`函数。然而,这个功能通常不直接在标准库中提供,你需要链接到合适的Windows头文件并引入必要的库。以下是一个简单的示例:
```cpp
#include <windows.h>
#include <psapi.h>
// 定义结构体来存储进程内存信息
struct PROCESS_MEMORY_COUNTERS_EX {
DWORD cb;
DWORD PageFaultCount;
SIZE_T PeakWorkingSetSize;
SIZE_T WorkingSetSize;
SIZE_T QuotaPeakPagedPoolUsage;
SIZE_T QuotaPagedPoolUsage;
SIZE_T QuotaPeakNonPagedPoolUsage;
SIZE_T QuotaNonPagedPoolUsage;
SIZE_T PagefileUsage;
SIZE_T PeakPagefileUsage;
};
int main() {
HANDLE hProcess = GetCurrentProcess(); // 获取当前进程句柄
PROCESS_MEMORY_COUNTERS_EX pmce;
if (GetProcessMemoryInfo(hProcess, (PROCESS_MEMORY_COUNTERS*)&pmce, sizeof(PROCESS_MEMORY_COUNTERS_EX))) {
// 计算物理内存占用(以字节为单位)
SIZE_T physicalMemoryUsage = pmce.WorkingSetSize + pmce.PagefileUsage;
std::cout << "Current process physical memory usage: " << physicalMemoryUsage << " bytes\n";
} else {
std::cerr << "Failed to get process memory info." << std::endl;
}
return 0;
}
```
这段代码会显示当前进程的物理内存占用(WorkingSetSize加上PagefileUsage)。请注意,这仅适用于Windows环境,并且可能需要管理员权限才能访问某些内存指标。
阅读全文