linux 开发程序的内存释放问题
首先我是通过top查看我的程序的内存使用情况
1.我使用第一种方法申请空间后再delete释放,是可以恢复到刚刚进入程序时使用的内存大小的
2.但是如果使用第二种方法,申请再delete释放后,内存使用没有降下来
3.我如果把char data[9]; 改为char data[1024]; 第二种方法的delete就可以成功的释放内存
以上现象是为什么呢?内存碎片吗?我的需求只能是9个字节,如何才能可以释放掉使用内存呢?
#include <stdio.h>
#define MEMLEN 1024*1024
class hugedata {
public:
hugedata(){}
char data[9]; //此处如果1024 下面第二种方法delete就可以释放掉内存
};
int main ()
{
//第一种方法
getchar();
hugedata *d = new hugedata[MEMLEN];
getchar();
delete[] d;
getchar();
/* //第二种方法
getchar();
hugedata *d[MEMLEN];
for(long i = 0; i < MEMLEN; i++)
{
d[i] = new hugedata();
}
getchar();
for(long i = 0; i < MEMLEN; i++)
{
delete d[i];
}
getchar();
*/
return 0;
}
------解决方案--------------------应用层内存池是解决此问题的方法。