如何获得程序的堆大小
如何在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
您也可以通过重载new
和delete
操作符来将堆追踪添加到您自己的程序中。 在我正在开发的游戏引擎中,我将所有内存分配都通过特殊函数,将特定函数附加到特定的堆跟踪器对象。 这样,在任何特定时刻,我都可以提交一份报告,看看有多少内存正在被实体,演员,Lua脚本等所占用。
它不如使用外部剖析器(尤其是当外部库处理自己的内存管理时),但是确切地查看您负责的内存是非常好的。
您可以使用getrlimit函数调用并为资源传递RLIMIT_DATA
。 这应该给你的程序数据段的大小。