指针有效性的判断

weixin_38048892 2019-09-19 01:17:34
对于一个指针的有效性判断始终困扰着我,目前唯一能想到的方法就是在删除对象之后给指针变量赋零,删除之前判断是否为零。这个方法对于一些简单的项目来讲是绝对没问题的。我现在有这样一个情况,感觉很棘手:一个比较复杂的项目,出现了删除指针错误,在析构函数中,删除其他对象,该对象的析构函数又删除了另外的对象,就这样嵌套了数层,最差劲的是后面的对象的析构函数又引发了对前面的对象的析构(猜想可能是某些信号造成的,但是用blockSignals(true)还是不能避免),因此造成了循环而无法析构的问题,所以想到是否有什么好办法先判断一下对象的有效性。另外想到的就是异常捕获,这样将会增加很多代码,因为要对每一个delete命令都要捕获错误,而且qt也不提倡。更严重的是,这个过程中每个对象的析构函数都没有结束,这意味着每个对象都还没有被真正析构。在这个问题上大家有什么其他想法,欢迎一起讨论。
...全文
75 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38059392 2019-09-19
  • 打赏
  • 举报
回复
好好利用QScopedPointer,QSharedPointer,QPointer,可以看一下这两个地址:http://labs.trolltech.com/blogs/2009/08/21/introducing-qscopedpointer/http://labs.trolltech.com/blogs/2009/08/25/count-with-me-how-many-smart-pointer-classes-does-qt-have/
weixin_38063296 2019-09-19
  • 打赏
  • 举报
回复
这个,智能指针?消耗有点大吧。还是养成一个好的习惯吧
weixin_38108829 2019-09-19
  • 打赏
  • 举报
回复
yj_yulin : QPointer是我最常用的,即使isNull返回false也不能保证对象有效,QScopedPointer和QSharedPointer还不太熟悉。多谢你的连接,学习了cspp: 没办法,不能保证每个习惯都是良好的,况且代码也不可能都是一个人写的。今天认为好的习惯,明天可能就会发现他的问题了。

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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