众所周知,最开始我们用new来创建一个指针,那么等我们用完它之后,一定要用delete将该指针删掉。但是,值得注意的是,难道就仅仅是删除这个指针这么简单的么?下面,我们用一个程序来说明这个问题:
07 |
cout<<"将3赋给p的地址后,指针p读取的值:"<<*p<<endl; |
09 |
cout<<"删除空间后,指针p读取的值:"<<*p<<endl; |
12 |
cout<<"创建新空间后,指针p中保存的地址:"<<p<<endl; |
13 |
cout<<"指向新空间的指针p1保存的地址:"<<p1<<endl; |
15 |
cout<<"将23赋给p的地址后,指针p读取的值:"<<*p<<endl; |
16 |
cout<<"将23赋给p的地址后,指针p1读取的值:"<<*p1<<endl; |
在上面这个程序中,我们在第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)" />
加载中,请稍候......