入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2015-07-14 投稿人: 浏览次数:2020

http://blog.sina.com.cn/s/blog_6405313801013jvg.html


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删掉了。但是,我们来看看程序的输出结果:

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

      

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。