首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于指针失效有关问题

2013-12-28 
关于指针失效问题[解决办法]引用:Quote: 引用:Quote: 引用:1、对象可以声明为指针类型;2、对象被释放后同时

关于指针失效问题

                                                                            
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

1、对象可以声明为指针类型;
2、对象被释放后同时指向NULL,这样就可以简单判别了。

这样虽然这个指针为NULL,但定时器内部保存的指针不为NULL,当事件触发时该对象已不存在,导致调用出错。

这个问题其实是这样的,有一个类A,其他类B和C的内部都保存一个指向类A的指针,会调用A的成员函数。
当类A被析构后,B和C得不到通知,导致调用出错。

感谢你的帮助!


我觉得还是得用智能指针,并且B和C的内部都会判断指针失效。如果B,C内部根本不判断指针失效,那神也救不了你


再一想,LZ可能的问题的A并不是指针,而是一个栈对象,传给B,C的却是地址,这样确实没法用智能指针,解决办法就两个。要么把A弄成指针,由只能指针负责告知指针失效,要么改变A的逻辑,在A的析构函数里通知B,C指针失效,必要时连B,C逻辑也要改,让它们能接受A指针失效的通知。
[解决办法]
换一种方式呗!bug总是形形色色
[解决办法]
在类 A 的析构函数中,把被析构对象从 g_timer 的 <timerId,ITimer*> 列表中删除。

热点排行