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

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还存在内存中 该如何释放

qq_花开花谢_0
浏览 1589回答 4
4回答

慕桂英3389331

delete(p);只表示p所指向的内存块的所有权,不归p所管了,但是内存里的值还在,所以你delete完之后,取内存里的值,当然还在。所以为什么内存释放之后一定要将指针置空,防止野指针出现正确做法:delete(p);p = NULL;

神不在的星期二

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