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

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

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

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

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

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

时间: 2024-12-25 04:45:19

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

输入5个整数,找出其中最大整数和最小整数所在的位置,并将二者对调,然后输出调整后的5个数。

#include<stdio.h> main() { int arr[5], max, min, i, j, k; printf("Please enter five integers:\n"); for(i=0; i<5; i++) scanf("%d", arr[i]); min = arr[0]; for(i = 0; i < 5; i++) if(arr[i] < min) { min = arr[i]; j = i; } ma

sql语句练习:找出平均工资小于5000的商店所在的城市

员工信息表 employee: user_id , name, store_id, salary 商店表stores:store_id, name,city 参考答案:select a.city from stores a,employee b where b.store_id=a.store_id group by b.store_id having avg(b.salary)<5000 原文地址:https://www.cnblogs.com/testertechnology/p/10980

QString,QByteArray和QBitArray之间的转换

1:QBitArray2QString :也可以转化为整型, 测试程序: 测试输出结果是否和移位结果相同: [cpp] view plaincopyprint? QBitArray x; int bit; bit = 10; x.resize(32); x.fill(false); x.setBit(bit,true); QBitArray b; b = this->BitArrayInvert(x); ui->textEdit->setPlainText(this->bitArr

VS2010中qDebug输出乱码的问题

1.开发环境:安装Qt5.3.2(离线安装包安装):VS版本为:2010 SP1Rel:源代码默认保存格式为GB2312. 2.输出乱码的代码 #include <QtCore/QCoreApplication> #include <QRegularExpression> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QString namePattern("人员状态表-(\\D+)-

QTexstStream的操作对象是QIODevice(因此QFile,QBuffer,QProcess,QTcpSocket都可以使用),或者QString

QTexstStream用于读写纯文本以及HTML,XML等文本格式的文件,此类考虑了Unicode编码与系统本地编码的或其它任意编码之间的转换问题,别且明确地处理了因使用不同的操作系统而导致的行尾符之间的转换(windows系统的行尾符是“\r\n”,unix和mac os x系统是“\n”). QTexstStream的操作对象是QIODevice,可是QFile,QTEmporaryFile,QBuffer,QProcess,QTcpSocket或者QUpdSocket,此外还可以直接在Q

Effective C++ 条款九、十 绝不在构造和析构过程中调用virtual函数|令operator=返回一个reference to *this

  1.当在一个子类当中调用构造函数,其父类构造函数肯定先被调用.如果此时父类构造函数中有一个virtual函数,子类当中也有,肯定执行父类当中的virtual函数,而此时子类当中的成员变量并未被初始化,所以无法调用子类与之对应的函数.即为指向虚函数表的指针vptr没被初始化又怎么去调用派生类的virtual函数呢?析构函数也相同,派生类先于基类被析构,又如何去找派生类相应的虚函数? 2.做法:将子类的某个函数改为non-virtual,然后在子类构造函数中传递参数给父类函数.然后父类的构造函数

QString介绍

QString stores a string of 16-bit QChars, where each QChar corresponds one Unicode 4.0 character. 一.初始化QString字符串 1)Char * 初始化 QString str = "Hello"; QString converts the const char * data into Unicode using the fromAscii() function. 2)QChar[]数组

数字转QString格式化

1 想要获得001 002 这样的数字 int i=1; QString b=QString("%1").arg(i, 3, 10, QChar('0')); QStringList list; for(int i=0;i<128;i++) { list.append(QString("%1").arg(i, 3, 10, QChar('0'))); } 输出为 ("000", "001", "002"

CCS4.2编译出错提示与修改方法

可能需要的其他步骤 有时在迁移过程中向导并不会冒险去改动一些具体的内容,这时可能就需要您多加留意并解决这类问题.在大多数情况下,需要执行的更改位于内部的源文件或链接器命令文件中:由于向导在迁移过程中采用了保守的做法,因此不会直接修改这些类型的文件. ? 1. 例如,将会显示如下的消息框,<migration.log> 文件位于项目目录下.强烈建议打开此日志文件检查是否存在任何问题. 图 6:迁移警告 ? 2. CCSv3.3 中有些项目拥有自动导入的隐式包含目录,会引发生成错误.如果遇到这种情