码迷,mamicode.com
首页 > 其他好文 > 详细

QDebug &operator<<出错(根据QString来找,是不得要领的,而是应该根据QString所在的对象来思考)

时间:2016-01-18 20:25:56      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

程序运行后,总是崩溃在这个地方:
inline QDebug &operator<<(const QString & t)

我应该用什么办法找出是哪个QString出了问题呢?QString是自释放的,为什么还会有这种问题呢?-

---------------------------------------------------------------------------------------

理论:实际原因找了半天,是因为包含QString这个对象被delete了两次,自然出错。但是根据QString来找,是不得要领的,而是应该根据QString所在的对象来思考。

实际:更具体一点,我在一个析构函数里调用了qDebug() << m_logname; 语句。因此第二次调用delete的时候,会首先调用析构函数,然后再释放内存。此时就出错了,因为对象不存在,这个m_logname自然也不存储。虽然QString是自释放的,但是QString的指针本身被指向一个不存在的区域,还是会出错的。这时候自释放都已经帮不上什么忙了。

 

QDebug &operator<<出错(根据QString来找,是不得要领的,而是应该根据QString所在的对象来思考)

标签:

原文地址:http://www.cnblogs.com/findumars/p/5140196.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!