• 7808阅读
  • 3回复

指针有效性的判断 [复制链接]

上一主题 下一主题
离线sbtree
 
只看楼主 倒序阅读 楼主  发表于: 2009-12-15
对于一个指针的有效性判断始终困扰着我,目前唯一能想到的方法就是在删除对象之后给指针变量赋零,删除之前判断是否为零。这个方法对于一些简单的项目来讲是绝对没问题的。我现在有这样一个情况,感觉很棘手:一个比较复杂的项目,出现了删除指针错误,在析构函数中,删除其他对象,该对象的析构函数又删除了另外的对象,就这样嵌套了数层,最差劲的是后面的对象的析构函数又引发了对前面的对象的析构(猜想可能是某些信号造成的,但是用blockSignals(true)还是不能避免),因此造成了循环而无法析构的问题,所以想到是否有什么好办法先判断一下对象的有效性。另外想到的就是异常捕获,这样将会增加很多代码,因为要对每一个delete命令都要捕获错误,而且qt也不提倡。更严重的是,这个过程中每个对象的析构函数都没有结束,这意味着每个对象都还没有被真正析构。在这个问题上大家有什么其他想法,欢迎一起讨论。
windows 7 + VC++2008 + Qt4.5.2
离线yj_yulin

只看该作者 1楼 发表于: 2009-12-16
离线cspp

只看该作者 2楼 发表于: 2009-12-16
这个,智能指针?消耗有点大吧。
还是养成一个好的习惯吧
离线sbtree
只看该作者 3楼 发表于: 2009-12-17
yj_yulin : QPointer是我最常用的,即使isNull返回false也不能保证对象有效,QScopedPointer和QSharedPointer还不太熟悉。多谢你的连接,学习了
cspp: 没办法,不能保证每个习惯都是良好的,况且代码也不可能都是一个人写的。今天认为好的习惯,明天可能就会发现他的问题了。
[ 此帖被sbtree在2009-12-17 00:53重新编辑 ]
windows 7 + VC++2008 + Qt4.5.2
快速回复
限100 字节
 
上一个 下一个