当前位置: 技术问答>linux和unix
linux 开发程序的内存释放问题
来源: 互联网 发布时间:2017-04-20
本文导语: 首先我是通过top查看我的程序的内存使用情况 1.我使用第一种方法申请空间后再delete释放,是可以恢复到刚刚进入程序时使用的内存大小的 2.但是如果使用第二种方法,申请再delete释放后,内存使用没有降下来 3.我...
首先我是通过top查看我的程序的内存使用情况
1.我使用第一种方法申请空间后再delete释放,是可以恢复到刚刚进入程序时使用的内存大小的
2.但是如果使用第二种方法,申请再delete释放后,内存使用没有降下来
3.我如果把char data[9]; 改为char data[1024]; 第二种方法的delete就可以成功的释放内存
以上现象是为什么呢?内存碎片吗?我的需求只能是9个字节,如何才能可以释放掉使用内存呢?
#include
#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
1.我使用第一种方法申请空间后再delete释放,是可以恢复到刚刚进入程序时使用的内存大小的
2.但是如果使用第二种方法,申请再delete释放后,内存使用没有降下来
3.我如果把char data[9]; 改为char data[1024]; 第二种方法的delete就可以成功的释放内存
以上现象是为什么呢?内存碎片吗?我的需求只能是9个字节,如何才能可以释放掉使用内存呢?
#include
#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