新手问题,什么时候需要释放内存???

huis 2008-05-02 09:04:24
书上一直在提示注意内存泄露,要释放内存,,,那么都什么时候需要释放内存呢???总不知道那些变量需要释放,有一个统一的规定吗???
...全文
652 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanleichicheng 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 michney 的回复:]
以后用不上,用完了,立即释放
c++里如果成员变量是指针,一般在析构函数里释放
如果在成员函数里面分配堆内存,记着离开之前释放就行
[/Quote]
内存什么时候在堆上分配??
ascent2006 2008-05-05
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 visame 的回复:]
malloc--->free
new----->delete
记住下面这句话:
少女谁污染了谁负责,内存谁分配了谁释放
[/Quote]
牛!
Eleve 2008-05-05
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 visame 的回复:]
malloc--->free
new----->delete
记住下面这句话:
少女谁污染了谁负责,内存谁分配了谁释放
[/Quote]

太tm经典了...
Soulic 2008-05-05
  • 打赏
  • 举报
回复
在使用malloc或者是new动态分配堆空间后,再不使用这些存储空间的时候,使用free或者是delete释放
CSGAOSHOU 2008-05-05
  • 打赏
  • 举报
回复
用句不好听的话叫作 过河就拆桥啊 这就是放内存
na_he 2008-05-05
  • 打赏
  • 举报
回复
malloc new globlalloc这是大家经常用到的分配内存的函数了,他们有自己相应的释放的函数了,那么大家在coding的时候要养成好的习惯,他们要成对出现了。

大家出现内存泄漏最多的恐怕是,在一个地方申请,而不一定就在这里释放了,而要等到使用者来释放了。这就要注意函数借口要设计写清楚是谁释放了,否则就会出问题了,呵呵!

还有就是链表,和数据中的内存了,要注意逐个释放了,不要漏掉了,问题最多的就是只delete头节点的了!
Irene12 2008-05-05
  • 打赏
  • 举报
回复
在使用malloc或者是new动态分配堆空间后,再不使用这些存储空间的时候,使用free或者是delete释放,换句话说就是你自己给分配的空间,你就的自己释放
r_swordsman 2008-05-04
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 sunlu_eric 的回复:]
引用 27 楼 r_swordsman 的回复:
引用 1 楼 baihacker 的回复:
在那个内存不使用的时候需要释放


应该是不能使用之前释放


不是吧!就应该是“在那个内存不使用的时候需要释放 ”吧!
[/Quote]

应该是不能使用之前释放吧?
sunlu_eric 2008-05-04
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 r_swordsman 的回复:]
引用 1 楼 baihacker 的回复:
在那个内存不使用的时候需要释放


应该是不能使用之前释放
[/Quote]

不是吧!就应该是“在那个内存不使用的时候需要释放 ”吧!

chen_yuan 2008-05-04
  • 打赏
  • 举报
回复
使用动态内存后,不要用的时候就应该释放掉,防止造成内存泄露。
new-----delete(delete [])
malloc--free
kaz33 2008-05-04
  • 打赏
  • 举报
回复
希望能帮到你!!
kaz33 2008-05-04
  • 打赏
  • 举报
回复
malloc--->free
new----->delete
malloc,free和new,delete是成对使用的,就是在你用malloc(函数)或是new(关键字)动态分配内存空间的时候就要与之相对应的使用free或delete释放内存
用int,char,double申请的内存空间都是在栈内存,栈内存空间的特点是,你用变量的时候申请的空间都是连续的,申请的这段空间有大小限制(好像是1M),而且在使用完后系统会自动帮你释放这个空间回收内存,而用malloc或new分配的内存空间是在堆内存里的,堆内存空间的特点是,你申请的空间不是连续的,没有大小限制,而且使用完后系统不会帮你释放这个空间,必须你自己来释放,回收内存,这时就会用到free(函数)或delete(关键字),不然就会出现内存泄露
内存泄漏是指这段空间你没有释放,别的程序就不能使用,不能往这段空间写入数据,你申请的这样的空间多了,内存能使用的空间就会越来越少,容易造成死机,蓝屏等,这就是内存泄漏.
在你释放了空间后,最好还要把指向那段空间首地址的指针赋为NULL,如int *i = new int; delete i; i=NULL; 因为在你释放了那段空间后,你的指针指向的地址没有变,还是指向那段被释放的空间,以后你在使用它,容易报错.
r_swordsman 2008-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 baihacker 的回复:]
在那个内存不使用的时候需要释放
[/Quote]

应该是不能使用之前释放
fallening 2008-05-04
  • 打赏
  • 举报
回复
写了
int *i = new int;
之后,马上写
delete i;
然后光标上移一格,在这两行之间插入新的代码段

别的也是这样
skran 2008-05-04
  • 打赏
  • 举报
回复
应该是不需要使用的时候吧.
Treazy 2008-05-03
  • 打赏
  • 举报
回复
有分配,就应该有释放

如果没有,那就是一个bug
hmsuccess 2008-05-03
  • 打赏
  • 举报
回复
就像这个int* han = new int[2];
han[0]=1;
han[1]=2;

.......
delete [] han;
这儿delete就是放了动态数组所占的空间,返回给内存池
我是风 2008-05-03
  • 打赏
  • 举报
回复
不再使用的时候
cprime 2008-05-03
  • 打赏
  • 举报
回复
如果你要自己来释放不在用的内存空间的话,你可以用new来申明空间,用delete来释放。如果你是静态的申明一个个空间的话,系统会来处理为它所分配的空间。
yrnaaa 2008-05-03
  • 打赏
  • 举报
回复
内存不用了就要释放。
malloc --》 free
new -----> delete
简单地说, 在一个函数中,你申请了一块动态内存,函数结束时你要释放它(当然要保证不被其他函数使用)。外,如果使用于消息的结构体,那就要看平台的实现了,是处理完这条消息系统给你释放还是需要你自己释放,一般消息是系统给释放的。
加载更多回复(21)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧