delete ptr 和 ptr=0有什么区别?

lxb365 2005-11-05 09:01:46
指针ptr
delete ptr和ptr=0有什么区别?
...全文
195 5 打赏 收藏 转发到动态 举报
写回复
用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地址,还在

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧