如何获得程序的堆大小

如何在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;
 }

使用valgrind的堆分析器:Massif


您也可以通过重载newdelete操作符来将堆追踪添加到您自己的程序中。 在我正在开发的游戏引擎中,我将所有内存分配都通过特殊函数,将特定函数附加到特定的堆跟踪器对象。 这样,在任何特定时刻,我都可以提交一份报告,看看有多少内存正在被实体,演员,Lua脚本等所占用。

它不如使用外部剖析器(尤其是当外部库处理自己的内存管理时),但是确切地查看您负责的内存是非常好的。

我的记忆表的样本


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

链接地址: http://www.djcxy.com/p/86509.html

上一篇: how to get Heap size of a program

下一篇: How is memory allocated on heap without a system call?