关于delete后的问题?
删除 动态指针后 会变成 悬垂指针 应将指针置为零怎么实现
能否给出代码 悬垂指针是这个意思,但是并非单一的delete后出现的。
举个例子
int *p = new int(1);
假设这里插入N多代码
int *p2 = p;
假设再插入N多代码
delete p; //这里释放了,也知道p不能使用了,是个悬垂的,最好置0
假设又插入N多代码
f(p2); //以为p2还可以用,没释放过嘛,结果运行到某个时候崩溃
这里才是悬垂指针的危险性,这样的错误再大型系统里很难很难debug,也很难避免,置0什么的也没用,只有经验再经验,细心再细心 谢谢了
那置零 是编译器自己操作 还是 得手工操作
手工操作
如:int *p=new int(8);...
delete p;
p=o0; 删除P P这个变量删除不
那置零后 P还能不能再被赋值 可以..你自己写个了例子看看啊 #define SAFE_DELETE(f) \
delete f; \
f = NULL;
我是菜鸟
请问P被 DELETE 之后其作用域不就结束了吗?为什么还可以出现对其制0(P=0)这样的语句?就象
///*{
int a;
......
}
a=5; *////
有效吗? 作用域不会结束..
指针变量和DWORD变量没有任何区别,只不过它的内容是地址而已.
delete p; 释放的是p指向的内存,而不是p这个变量 多看看<高质量C++/C程序设计>(作者林锐),关于指针方面就会明白不少 Delete vs. Delete [] in C and C++
http://www.digcode.com/default.aspx?page=ed51cde3-d979-4daf-afae-fa6192562ea9&article=17ec9949-09c0-4093-9c71-aaebb8dbc4ca 有点明白了。谢谢
页:
[1]
