社区
C++ 语言
帖子详情
delete ptr 和 ptr=0有什么区别?
lxb365
2005-11-05 09:01:46
指针ptr
delete ptr和ptr=0有什么区别?
...全文
195
5
打赏
收藏
delete ptr 和 ptr=0有什么区别?
指针ptr delete ptr和ptr=0有什么区别?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fflush
2005-11-05
打赏
举报
回复
delete ptr;将调用Ptr所指向对象的析构函数(如果有的话),然后释放ptr所指向的堆对象,不过ptr的值不会被改变,ptr仍旧指向原来的对象,只是现在那个对象已经无效了
ptr=0;将ptr的值赋为0,其他什么都没干
chqu18
2005-11-05
打赏
举报
回复
一个是删除申请的空间,一个是指针赋值吧.
suzukilt
2005-11-05
打赏
举报
回复
楼上的好象不对
delete ptr仅仅是删除了new创建的堆对象,即ptr所指向的对象
但是ptr仍然存在,其值应该不变,仍然是原堆对象的指针
而ptr=0将ptr变为空指针
不知道说的对不对
happydivid
2005-11-05
打赏
举报
回复
楼上的错了
delete ptr;//是释放了ptr所指向的内存单元里的内容,使程序在运行过程中不会造成内在泄漏。但ptr指针还是存在的,你完全可以将它指向另一个内存单元。
ptr=0;//是将ptr指向了地址0,使其成为一个不可存放东西的指针,也就是空指针。而你这样做了后,ptr原先指向的内存就得不到释放,造成了内存泄漏,这是大型程序的致命伤
pbcd
2005-11-05
打赏
举报
回复
delete ptr 删除了指针
而ptr=0 只是让指针指向一个0地址,还在
c++
delete
后还要把指针设置成null
int *
ptr
= ...
delete
ptr
; //这里会变成悬空指针
ptr
=null; //不能少
对
delete
*
ptr
的理解(释放内存、空悬指针、重复释放)
对
delete
*
ptr
的理解: (1)
delete
只是表示“将内存资源还给系统”,当下次程序再调用new申请内存的时候,系统就可以将这块内存重新分配给使用者; (2)而实际上调用
delete
*
ptr
; 之后,当前程序仍可以操作 *...
C++学习之路-new/
delete
误区
很多人会认为,执行完
delete
ptr
,指针
ptr
指向的堆空间被回收,然后这段堆空间内存被清空。这里要着重说明一下回收堆空间内存的含义:那四个字节,我在执行完
delete
ptr
后不使用了,但是可以被别人继续使用。new申请...
shared_
ptr
和unique_
ptr
唯一指针 unique_
ptr
: 通过实现new,可不用去手动调用
delete
从而即可在当前的作用域内自动回收内存。例子如下,可以不用手动调用
delete
. 此外unique_
ptr
不支持以下的操作方式: unique_
ptr
(const unique_
ptr
&...
shared_
ptr
和unique_
ptr
区别
和联系
shared_
ptr
和 unique_
ptr
区别
和联系 shared_
ptr
和 unique_
ptr
区别
和联系 shared_
ptr
类 shared_
ptr
和 unique_
ptr
共有操作 shared_
ptr
独有操作 make_shared 函数 unique_
ptr
类 unique_
ptr
独有操作 示例程序...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章