clion2022+QT6.2 设计蓝牙上位机 报 abort() has been called
设计到多线程的时候,对新建的需要执行的线程类new操作时,会弹出abort() has been called,查阅了网上的说法,可以用release,就不会弹出,我试了一下,确实可以,但还是想找到问题的根本,我就继续查,然后一行一行的调试,发现是在new操作的时候,故对类定义进行检查发现,里面有一个成员变量只有定义,没有初始数值,所以报错了。
- 更改前的类
class FFTWorkThread : public QObject{
Q_OBJECT
public:
//FFTWorkThread(int num ,QObject *parent = nullptr);
//FFTWorkThread();
explicit FFTWorkThread(QObject *parent = nullptr);
//void receiveData(QVector<QPoint>);
void FFTwork(QVector<QPointF>);
void fftIterate(Complex *resource, Complex *result, int n);
void fftButterFly(Complex *resource, Complex *result, int n);
public:
int Number;
const int Rate = 1000; //定义采样率
Complex* Resource = new Complex[Number]();//存储傅里叶变换原始数据
Complex* Result = new Complex[Number]();//傅里叶变换后数据
QVector<QPointF> FFTData;
//Complex Result;
signals:
void sendResultVector(QVector<QPointF>);//发送FFT运算完成信号,并将运算结果发送出去
};
- 对Number成员变量初始化后,就不会弹出这个报错
class FFTWorkThread : public QObject{
Q_OBJECT
public:
//FFTWorkThread(int num ,QObject *parent = nullptr);
//FFTWorkThread();
explicit FFTWorkThread(QObject *parent = nullptr);
//void receiveData(QVector<QPoint>);
void FFTwork(QVector<QPointF>);
void fftIterate(Complex *resource, Complex *result, int n);
void fftButterFly(Complex *resource, Complex *result, int n);
public:
int Number = 10;
const int Rate = 1000; //定义采样率
Complex* Resource = new Complex[Number]();//存储傅里叶变换原始数据
Complex* Result = new Complex[Number]();//傅里叶变换后数据
QVector<QPointF> FFTData;
//Complex Result;
signals:
void sendResultVector(QVector<QPointF>);//发送FFT运算完成信号,并将运算结果发送出去
};