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

c++ delete函数释放内存了吗?

c++ delete函数释放内存了吗?

qq_花开花谢_0 2019-02-12 15:11:28
class Parent{public:Parent();~Parent();void setX(int x);int getX();private:int x;};void Parent::setX(int x){this->x=x;}int Parent::getX(){return this->x;}一个很普通的类 然后mian函数我调用的时候结果很让我费解Parent *p=new Parent();p->setX(5);cout<<p->getX();delete(p);cout<<p->getX();结果输出了 2个5 我以为会报错的 . delete没有把 x 的内存释放掉为什么?为什么 x还存在内存中 该如何释放
查看完整描述

4 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

delete(p);
只表示p所指向的内存块的所有权,不归p所管了,但是内存里的值还在,
所以你delete完之后,取内存里的值,当然还在。

所以为什么内存释放之后一定要将指针置空,防止野指针出现

正确做法:
delete(p);
p = NULL;

查看完整回答
反对 回复 2019-03-22
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

如果类的对象里没有用new创建的数据成员,那么你就不需要担心类所占的空间 ,因为在这个对象的生命周期结束之后就会自己回收内存
如果是通过new那么 内存是在堆上分配 则使用delete删除类中的用new开辟的数据成员,其他的不用管,自动释放。

查看完整回答
反对 回复 2019-03-22
  • 4 回答
  • 0 关注
  • 1588 浏览
慕课专栏
更多

添加回答

举报

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