首页 > 解决方案 > 有没有办法测量 c++ 程序的运行时内存使用情况?

问题描述

基本上我正在做一些有竞争力的编程工作,我想(在本地)检查我的程序在运行时使用了多少内存。我想用另一个程序来衡量这个。有没有办法做到这一点?如果是这样,我可以得到代码吗?这里很混乱。

如果有独立于平台的方式会更好。

标签: c++memory

解决方案


不幸的是,没有平台无关的方式。如果您想测量程序外部的内存使用情况,而不更改其代码,那么您需要使用特定于操作系统的工具。

在 Linux 上:在 Linux 中,如何判断进程正在使用多少内存?. 它基本上告诉你解析/proc/{the process id of the running program}/smaps. 这种方法的一种变体可能适用于具有/proc/文件系统的其他系统。

在 Windows 上:如何在 C++ 中使用 GetProcessMemoryInfo?. 它需要的HANDLE过程,你可以得到

handle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 
                     FALSE, process_id);
PROCESS_MEMORY_COUNTERS couters;
GetProcessMemoryInfo( handle, &counters, sizeof(counters));
CloseHandle(handle);

now do something with counters ....
               

推荐阅读