社区
C++ 语言
帖子详情
delete为何不彻底?
pizazz
2003-05-25 05:04:13
例如 p 是个对象指针,为何 delete p 之后,还需加上 p=NULL; 这样才能使p真的为空指针?
...全文
160
10
打赏
收藏
delete为何不彻底?
例如 p 是个对象指针,为何 delete p 之后,还需加上 p=NULL; 这样才能使p真的为空指针?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
forever1314
2003-05-27
打赏
举报
回复
加0是为了防止delete p后再次delete p后出错(由于误操作等);
delete p后p所指向的空间被释放,如果再次删除,就会出错。
将p赋0,如果再次执行delete操作就等于删除一个空指针,所以不会出错
cenphoenix
2003-05-27
打赏
举报
回复
delete p只是delete掉了p指向的空间,可是p并没有delete掉。它还是存在的,而且它还可以继续指向其他的内存空间。而c++中说delete一个指向不知道值的指针是危险的,可是delete一个指向null的指针是合适的。所以要给p=null;
pzytony
2003-05-27
打赏
举报
回复
下面提两点,让大家可以防止上面的情况出现:
1) 指针声明后要马上初始化。因为指针出现的缺省值是随机的,所以一定要赋值为NULL,然后再使用。
2) 调用了free和delete后一定要将指针赋值为NULL。原因上面已经提过了,就不再赘述了。
David2008
2003-05-27
打赏
举报
回复
万丈高楼 平地起
pegeon
2003-05-27
打赏
举报
回复
说得都有道理,我就不补充啦,呵呵
wahao
2003-05-25
打赏
举报
回复
全是高手啊!
一个三角号在学习ing
晨星
2003-05-25
打赏
举报
回复
还有一点,delete后,如果再把p置为NULL,则万一再有对p的delete操作,那么按照C++标准的规定,将不会产生错误。
因为C++标准规定对空指针的delete操作是个空操作,也就是什么都不作。
积木
2003-05-25
打赏
举报
回复
你怎么判断一个指针是否只想了一段内存呢?
通常的编程逻辑就是判断 p 是否为空
但是正如上面所说,c++中没有这种付空的功能,就只好自己做了
snipersu
2003-05-25
打赏
举报
回复
delete 后,p还指向那里,但给p分配的内存已经回收了,如果你不让p=NULL的话,如果你再次使用p的话(可能现在p所指的内存已经分配给别“人”了)就会出错。所以让p=NULL你如果再使用的话就监测到p=NULL程序就不做处理,即使处理也不会出事,只是报错。
lifanxi
2003-05-25
打赏
举报
回复
就是这样规定的。delete只是用于释放p所指的内存空间,并没有把p置0的责任。
detele后p所指的内容就不能用了,这里p就是一个所谓的野指针或叫悬挂指针,再把它置0只是为了安全,以后不致于不小心再用它。
File
Delete
Absolutely v3.04.zip
File
Delete
Absolutely专门用来将自己电脑上不用的机密文件... 目前
彻底
删除文件"File
Delete
Absolutely "最新的版本为3.01。 3.01版本增加了进度显示,让你能够清楚知道
彻底
删除文件的进度;增加了多种容错处理。
delete
archivelog all无法清除归档日志解决方法
最近在因归档日志暴增,使用
delete
archivelog all貌似无法清除所有的归档日志,究竟是什么原因呢?本文将为您解答,需要的朋友可以参考下
MySQL DML 语言(插入、更新与删除数据)
# 插入、更新与删除数据 MySQL中提供了功能丰富的数据库管理语句,包括有效地向数据库中插入数据的 INSERT 语句,更新数据的UPDATE语句以及当数据不在使用时删除数据的
DELETE
语句等。 # 高阶 DML 操作 将...
File
Delete
Absolutely v1.03
File
Delete
Absolutely专门用来将自己电脑上不用的机密文件
彻底
删除,不会被任何文件恢复工具所恢复。使你能够完全保护好自己的机密。
secure-
delete
-3.1-6.2.x86_64.rpm
secure-
delete
-3.1-6.2.x86_64版本,适用于CentOS6/RedHat6/SUSE10等系统 secure-
delete
软件包包含一些安全删除工具,这些工具能够安全清除文件数据、释放磁盘空间、交换分区和内存。 secure-
delete
软件包中包含...
C++ 语言
64,636
社区成员
250,963
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章