学习交流

C++博客 首页 新随笔 联系 聚合 管理
  2 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
“别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。……”

指针仍在栈中,只不过指向的内存单元被释放掉。
如:
int *p ;
/*p在栈中;*/

p = new int ( 100 ) ;
/*在堆中申请一块长度为4字节(int),并赋值为100; p 指向这个单元。假设单元地址为 address0 , 则 p = address0;*/

delete p ;
/*释放掉 p 指向的单元,但 p 仍存在,p 在栈中,并且 p 仍等于 address0;
直到 p 的生命期结束,内存管理自动释放 p,指针p 就被干掉了!!*/

需要说明的是,我们往往在程序,或者函数结尾时,进行 delete ;这时指针的生命周期往往也随之结束,所以这个细节很少被人注意,我们没有碰到这类的麻烦。对于写程序不注意结构化,不注意分模块,就会有隐患,嘿嘿。

感谢作者的总结,我只是写了我临时产生的体会。
re: A simple Game 邵腾飞 2006-11-09 20:19
我下载不下来,期待你发给我,shaotengfei1984@yahoo.com.cn
re: 垃圾收集趣史(转载) 邵腾飞 2006-11-08 22:13
比如很形象,生动。收藏了!
re: vc 使用总结 邵腾飞 2006-11-08 21:32
总结了很多经验,虽然有些我知道,但看了你写的一些东西后,我才懂得更全面。谢谢!