为了账号安全,请及时绑定邮箱和手机立即绑定

c++删除指针的问题

c++删除指针的问题

C++
慕婉清6462132 2019-02-20 13:13:08
#include<iostream>using namespace std;class human{public:human(){cout<<"构造";}int can(){x=4; return x;}private:int x;};int main(){(1) human *p=new human;(2)delete p;(3)p=0;(4)delete p;(5)p=new human;return 0;}第(2)释放了指针所指向的内存空间,第(4)将指针删除,为什么(5)还能使用这个指针,(4)不是已经把指针删除了吗?
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

new  delete不是字面意义上的新建和删除

new表示申请内存

delete表示释放内存(退还,归还给系统)

这是一对组合命令

1

2

3

4

5

6

(1) human *p=new human;  声明一个指针变量p,并分配空间

 (2)delete p;            释放p,释放后,p原来指向的内存空间不再为本程序所用,但变量p还是有效的,可以用,如(3)

 (3)p=0;                 给变量p赋值为0

 (4)delete p;            这句有问题了,当p没有指向任何内存空间时,进行Delete操作有可能会出现系统异常

 (5)p=new human;         这里再次申请一次内存空间,是允许的,p指向一个新的内存对象地址。

 return 0;


 


查看完整回答
反对 回复 2019-02-24
  • 2 回答
  • 0 关注
  • 717 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信