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

2025-04-27 14:46:18
推荐回答(4个)
回答1:

delete(p)确实已经释放了p所指向的那块内存,但所谓释放并不是清空,而是把那块内存重新回收到系统中,告诉系统这块内存又可以重新分配了。可以参考格式化和低级格式化的操作效果。
正确的做法是delete完之后还应当将指针置空。

回答2:

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

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

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

回答3:

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

回答4:

你已经取消了指针,但是指针指向的内存中的数据还在;
delete(p);和没写一样
直接p=NULL;就好了。