加载中…
个人资料
莫一剑
莫一剑
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,069,509
  • 关注人气:104
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C++ 使用delete删除指针(1)

(2012-10-23 08:42:01)
标签:

杂谈

分类: 编程和设计模式

众所周知,最开始我们用new来创建一个指针,那么等我们用完它之后,一定要用delete将该指针删掉。但是,值得注意的是,难道就仅仅是删除这个指针这么简单的么?下面,我们用一个程序来说明这个问题:



#include
02 using namespace std;
03 int main()
04 {
05     int *p=new int;
06     *p=3;
07     cout<<"将3赋给p的地址后,指针p读取的值:"<<*p<<endl;
08     delete p;
09     cout<<"删除空间后,指针p读取的值:"<<*p<<endl;
10     long *p1=new long;
11     *p1=100;
12     cout<<"创建新空间后,指针p中保存的地址:"<<p<<endl;
13     cout<<"指向新空间的指针p1保存的地址:"<<p1<<endl;
14     *p=23;
15     cout<<"将23赋给p的地址后,指针p读取的值:"<<*p<<endl;
16     cout<<"将23赋给p的地址后,指针p1读取的值:"<<*p1<<endl;
17     delete p1;
18     return 0;
19 }

       在上面这个程序中,我们在第8行就将指针p利用delete删掉了。但是,我们来看看程序的输出结果:

http://pic002.cnblogs.com/images/2011/302478/2011071817204629.png使用delete删除指针(1)" />

      对照着上面的程序,我们来分析一下这个输出。首先,我们在程序的第5行初始化了一个指针p。之后输出指针p读取的值。由于第6行的原因,程序肯定会输出3 了。之后,我们在程序的第8行删除了这个指针p。但是我们惊奇的发现,在程序的第9行竟然可以输出指针p读取的值。我们不是已经把它删了么?其实不 然,debug,上图:

http://pic002.cnblogs.com/images/2011/302478/2011071817212260.png使用delete删除指针(1)" />

      

0

阅读 收藏 喜欢 打印举报/Report
前一篇:幸福
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有