RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly

出现这个错误,在网上搜索了复制过来:

这个错误多半是因为一个变量定义好后还没有被初始化,在内存中还没有分配空间,就被拿来使用了

或者一些多线程里或者文件.h定义先后顺序的问题,检查变量被使用前是否已经初始化和分配空间

在用QT5做串口实验的时候,自作聪明的用一个做QSerialPort对象指针做成员,代码如下:

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_comboBox_2_currentIndexChanged(const QString &arg1);

    void on_SendButton_clicked();

private:
    Ui::MainWindow *ui;
    QSerialPort *serial;
    void initSerialPort();
    void serialRead();
};
View Code

这本也没什么,QSerialPort  *serial; 只是一个指针

QSerialPort    serial; 才是一个类对象
如果用QSerialPort  *serial;,那就应该动态创建一个对象,或者让这个serial指针指向已有的对象,才能使用serial。

但是并没有那么做,而是直接用serial指针操作,完全忘了申请一个对象了。结果就报了这么错。

在网上搜了搜,看见有段回答,还不明白,先复制下来,慢慢体会:

一般在如下情况把成员定义成指针:
1)有多态的情况;会用到虚函数
2)可能和别的类共享,或者只是引用别的类里的某个对象,所以生命周期不是很确定(考虑智能指针)
3)大数据,如果定义成对象,会导致当前对象无法在栈内创建

懒惰不会让你一下子跌到 但会在不知不觉中减少你的收获; 勤奋也不会让你一夜成功 但会在不知不觉中积累你的成果 越努力,越幸运。
原文地址:https://www.cnblogs.com/Rainingday/p/7905049.html