| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1438 人关注过本帖
标题:关于delete后的问题?
只看楼主 加入收藏
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
 问题点数:0 回复次数:11 
关于delete后的问题?
删除 动态指针后 会变成 悬垂指针  应将指针置为零
怎么实现
能否给出代码
搜索更多相关主题的帖子: delete 
2008-05-08 21:54
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
悬垂指针是这个意思,但是并非单一的delete后出现的。

举个例子
int *p = new int(1);
假设这里插入N多代码
int *p2 = p;
假设再插入N多代码
delete p;   //这里释放了,也知道p不能使用了,是个悬垂的,最好置0
假设又插入N多代码
f(p2);    //以为p2还可以用,没释放过嘛,结果运行到某个时候崩溃

这里才是悬垂指针的危险性,这样的错误再大型系统里很难很难debug,也很难避免,置0什么的也没用,只有经验再经验,细心再细心

Fight  to win  or  die...
2008-05-09 00:21
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
谢谢了
那置零 是编译器自己操作 还是 得手工操作
2008-05-09 11:56
zzy840208
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-4-16
收藏
得分:0 
手工操作
如:int *p=new int(8);
    ...
   delete p;
   p=o0;
2008-05-09 12:12
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
删除P   P这个变量删除不
那置零后 P还能不能再被赋值
2008-05-09 12:55
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
可以..你自己写个了例子看看啊

学习需要安静。。海盗要重新来过。。
2008-05-09 22:12
Aegisys
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-5-10
收藏
得分:0 
#define    SAFE_DELETE(f)    \
    delete f;    \
    f = NULL;
2008-05-10 21:24
zhfsxtx
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-5-11
收藏
得分:0 
我是菜鸟
请问P被  DELETE 之后其作用域不就结束了吗?
为什么还可以出现对其制0(P=0)这样的语句?就象
///*{
   int a;
   ......
   }
a=5; *////
有效吗?
2008-05-11 04:12
Aegisys
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-5-10
收藏
得分:0 
作用域不会结束..

指针变量和DWORD变量没有任何区别,只不过它的内容是地址而已.
delete p; 释放的是p指向的内存,而不是p这个变量
2008-05-11 10:49
Aegisys
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-5-10
收藏
得分:0 
多看看<高质量C++/C程序设计>(作者林锐),关于指针方面就会明白不少
2008-05-11 10:50
快速回复:关于delete后的问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020166 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved