{
int *p = new int;
int a = 10;
*p = a;
cout<<p<<endl;
delete p;
// p = NULL;
cout<<p<<endl<<*p<<endl;
}上面的程序中,若delete后不加p=NULL,则释放后的p就会自动指向一个任意的内存吗?其次,delete到底是释放哪个内存啊,p是在堆区动态分配的一块空间,释放的是这块吗?若是,但delete后p的地址还是以前分配的那个地址啊,不懂了请大家指点指点!

解决方案 »

  1.   

    delete对应的是new,
    new申请内存,delete释放内存.
    delete之后p指向的内存为无效内存
      

  2.   

    http://wlp.6666.blog.163.com/blog/static/120966281200972391819630/我找到了一篇博客,讲得很清楚的,谢谢1楼朋友了!
      

  3.   

    *p = a; 
    这一句是P指针指向a的入口地址。所以delete是删除的这一部分的地址。
    如果不加p = NULL; 那么指针就未进行初始化,它没有任何实际的意义,也没有分配空间。所以一定要加
    p = NULL; 不然可能会有未知异常