如何获得在Windows下使用C ++的内存使用情况

我试图找出我的应用程序从程序本身消耗了多less内存。 我正在查找的内存使用情况是在Windows任务pipe理器的“进程”选项卡的“内存使用量”列中报告的数量。

一个好的起点是GetProcessMemoryInfo ,它报告有关指定进程的各种内存信息。 您可以传递GetCurrentProcess()作为进程句柄,以获取有关调用进程的信息。

PROCESS_MEMORY_COUNTERSWorkingSetSize成员可能与任务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 。 我没有使用它,但它看起来像你所需要的。