0

我有简单的程序,例如 C++

#include <iostream>  
int main()  
{  
    int a = 1000;  
    std::cout << a << std::endl;  
    return 0;  
}  

我正在尝试用 GNU 时间计算内存使用量。但是在“时间”输出中(使用我的格式,没关系)内存中进程的最大大小是用 libc.so 计算的,它具有 printf 函数(调用 std::cout)并且等于 3.5 Mb。
有没有办法在不加载共享库的情况下计算进程内存?

UPD我不能在处理我想要测量的内存运行时执行它,原因有几个。我在问是否有办法使用外包装工具(就像time是)

4

1 回答 1

0

pmap实用程序或仅读取/proc/123/mapspid 123 进程的文件以及/proc/self/maps您自己的进程,为您提供内存的详细映射。然后,您可以忽略有关您不想测量的库的行。

尝试cat /proc/self/maps了解更多...(它显示该cat命令的映射)。

它是特定于 Linux 的(可能不适用于 Solaris 或 FreeBSD)。

还有更标准的getrusage系统调用(它不区分共享库使用的内存与其他内存使用)。

于 2011-11-29T18:53:00.367 回答