如何获得程序的堆大小

Anu*_*Anu 12 c c++ linux

如何在linux平台下找到c ++程序的堆内存大小?我需要在使用new或malloc之前的堆内存空间以及之后.任何人都可以帮忙吗?

#include <malloc.h>
#include <iostream>
int main()
{

     //here need heap memory space
     unsigned char* I2C_Read_Data= new unsigned char[250];
     //get heap memory space After the usage of new 
     return 0;
 }
Run Code Online (Sandbox Code Playgroud)

eya*_*alm 5

使用valgrind的堆分析器:Massif


The*_*Saw 5

您还可以通过重载newdelete运算符将堆跟踪添加到您自己的程序中.在我正在研究的游戏引擎中,我通过特殊函数进行所有内存分配,这些函数将每个分配附加到特定的堆跟踪器对象.这样,在任何给定的时刻,我都可以提取报告,看看实体,演员,Lua脚本等占用了多少内存.

它不像使用外部探查器那么彻底(特别是当外部库处理他们自己的内存管理时),但是看到你负责的内存是非常好的.

我的记忆表的样本


Gan*_*har 0

您可以使用getrlimit函数调用并传递RLIMIT_DATA资源的 。这应该为您提供程序的数据段的大小。