猿问

如何使用C ++在运行时获取内存?

如何使用C ++在运行时获取内存?

我需要在我的程序运行时获取mem使用VIRT和RES并显示它们。

到目前为止我尝试了什么:

getrusage(http://linux.die.net/man/2/getrusage

int who = RUSAGE_SELF; struct rusage usage; int ret; ret=getrusage(who,&usage);cout<<usage.ru_maxrss;

但我总是0。


largeQ
浏览 751回答 3
3回答

莫回无

旧:maxrss说明进程的最大可用内存。0表示对该过程没有限制。您可能想要的是非共享数据使用情况ru_idrss。新:看起来上面实际上并不起作用,因为内核没有填充大部分值。什么工作是从proc获取信息。而不是自己解析它,使用libproc(procps的一部分)更容易,如下所示://&nbsp;getrusage.c#include&nbsp;<stdio.h>#include&nbsp;<proc/readproc.h>int&nbsp;main()&nbsp;{ &nbsp;&nbsp;struct&nbsp;proc_t&nbsp;usage; &nbsp;&nbsp;look_up_our_self(&usage); &nbsp;&nbsp;printf("usage:&nbsp;%lu\n",&nbsp;usage.vsize);}用“&nbsp;gcc -o getrusage getrusage.c -lproc”&nbsp;编译
随时随地看视频慕课网APP
我要回答