程序运行后,总是崩溃在这个地方:
inline QDebug &operator<<(const QString & t)
我应该用什么办法找出是哪个QString出了问题呢?QString是自释放的,为什么还会有这种问题呢?-
---------------------------------------------------------------------------------------
理论:实际原因找了半天,是因为包含QString这个对象被delete了两次,自然出错。但是根据QString来找,是不得要领的,而是应该根据QString所在的对象来思考。
实际:更具体一点,我在一个析构函数里调用了qDebug() << m_logname; 语句。因此第二次调用delete的时候,会首先调用析构函数,然后再释放内存。此时就出错了,因为对象不存在,这个m_logname自然也不存在。虽然QString是自释放的,但是QString的指针本身被指向一个不存在的区域,还是会出错的。这时候QString自释放都已经帮不上什么忙了。