delele指针都要注意些什么?

笑对人生 2010-07-16 05:29:12
在 delete指针之前你会注意些什么?



int *p = new int[10];


.............
//delete p[];(1)
if(p)
{
delete p[];
p = NULL;
}

]


如果是这样做的话我觉得有问题。。

如果 在 delete前 这个 指针已经被 delete过了,比如先执行的(1)语句。 但没有 让 p=NULL.. 这个时候就是 delete两次了。


大家在delete前都 做的什么判断?
...全文
145 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hastings 2010-07-18
  • 打赏
  • 举报
回复
C++中delete值为0的指针时不会出错的~~
所以delete一个指针时你甚至可以不用检查它是不是为0~~
不过一个好习惯是,delete后置零~~
aaaa3105563 2010-07-18
  • 打赏
  • 举报
回复
删除指针完 赋NULL
ajysnihao 2010-07-18
  • 打赏
  • 举报
回复
所以我觉得如果不置为NULL,delete因该是可以进行多次的吧
ajysnihao 2010-07-18
  • 打赏
  • 举报
回复
delete 好像只是内存空间的释放,而原有指针还是本来的值不变,因此可以理解为此时的指针为野指针,于是置为NULL,可以防此后面会有误操作。
度小白 2010-07-16
  • 打赏
  • 举报
回复
要么每次都NULL下,要么做个NULL判断!
liutengfeigo 2010-07-16
  • 打赏
  • 举报
回复
我会注意别delete2次
matrixcl 2010-07-16
  • 打赏
  • 举报
回复
如果delete p后没置空,而且p不是临时变量,建议找个这这段代码的人FIRE掉
yxqyrh 2010-07-16
  • 打赏
  • 举报
回复
如果没置空,就等着悲剧把
ypb362148418 2010-07-16
  • 打赏
  • 举报
回复
LZ注意下应该是

delete []p;
p = NULL;


写代码的时候注意下就好了,置为控之后别人在使用这个指针前肯定要
if(p)
这样团队的其他成员就知道p已经被释放了
笑对人生 2010-07-16
  • 打赏
  • 举报
回复
肯定会出现这样一种可能 性。 你 或者 其它人写的的程序 。 delete []p了。 但没置p=NULL... 而你 并不知道 前面已经 delete []p了。。。。

这时候 你再 delete []p. 就delete 两次了。。。
笑对人生 2010-07-16
  • 打赏
  • 举报
回复
我写的 delete p[] 误。 应该是 delete []p... 现在主要讨论的不是 这个问题。。


笑对人生 2010-07-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kitcaii 的回复:]
那就每次delete后都p=NULL呗。
注意是delete [] p;
[/Quote]


我当然知道这么做。。 我的问题是 如果 delete前没有 设置 p=NULL。
hurricane41 2010-07-16
  • 打赏
  • 举报
回复
delete []p;把数组都能清楚,否则不干净
kitcaii 2010-07-16
  • 打赏
  • 举报
回复
那就每次delete后都p=NULL呗。
注意是delete [] p;
Eleven 2010-07-16
  • 打赏
  • 举报
回复
delete以后置NULL

64,685

社区成员

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

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