如何获得在Windows下使用C ++的内存使用情况
我试图找出我的应用程序从程序本身消耗了多less内存。 我正在查找的内存使用情况是在Windows任务pipe理器的“进程”选项卡的“内存使用量”列中报告的数量。
一个好的起点是GetProcessMemoryInfo ,它报告有关指定进程的各种内存信息。 您可以传递GetCurrentProcess()
作为进程句柄,以获取有关调用进程的信息。
PROCESS_MEMORY_COUNTERS
的WorkingSetSize
成员可能与任务pipe理器中的Mem Usage coulmn最接近,但不会完全相同。 我会尝试不同的价值观来find最接近你需求的价值。
我想这就是你要找的东西:
#include<windows.h> #include<stdio.h> #include<tchar.h> // Use to convert bytes to MB #define DIV 1048576 // Use to convert bytes to MB //#define DIV 1024 // Specify the width of the field in which to print the numbers. // The asterisk in the format specifier "%*I64d" takes an integer // argument and uses it to pad and right justify the number. #define WIDTH 7 void _tmain() { MEMORYSTATUSEX statex; statex.dwLength = sizeof (statex); GlobalMemoryStatusEx (&statex); _tprintf (TEXT("There is %*ld percent of memory in use.\n"),WIDTH, statex.dwMemoryLoad); _tprintf (TEXT("There are %*I64d total Mbytes of physical memory.\n"),WIDTH,statex.ullTotalPhys/DIV); _tprintf (TEXT("There are %*I64d free Mbytes of physical memory.\n"),WIDTH, statex.ullAvailPhys/DIV); _tprintf (TEXT("There are %*I64d total Mbytes of paging file.\n"),WIDTH, statex.ullTotalPageFile/DIV); _tprintf (TEXT("There are %*I64d free Mbytes of paging file.\n"),WIDTH, statex.ullAvailPageFile/DIV); _tprintf (TEXT("There are %*I64d total Mbytes of virtual memory.\n"),WIDTH, statex.ullTotalVirtual/DIV); _tprintf (TEXT("There are %*I64d free Mbytes of virtual memory.\n"),WIDTH, statex.ullAvailVirtual/DIV); _tprintf (TEXT("There are %*I64d free Mbytes of extended memory.\n"),WIDTH, statex.ullAvailExtendedVirtual/DIV); }
GetProcessMemoryInfo是你正在寻找的function。 MSDN上的文档将指向您正确的方向。 从您传入的PROCESS_MEMORY_COUNTERS结构中获取所需的信息。
你需要包含psapi.h。
试试看看GetProcessMemoryInfo 。 我没有使用它,但它看起来像你所需要的。