当前位置:编程学习 > C/C++ >>

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++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,