C++ 使用delete删除指针(1)
众所周知,最开始我们用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,上图:
补充:软件开发 , C++ ,