qt错误记录:QMap等容器与 RtlWerpReportException 错误

好久好久没写博客了……自从上次记录错误问题之后到现在,遇到的问题都通过百度等方式得到了解决,就懒得记录了。但这次出现的问题又是在网上搜了好久都没有解决的,现在终于解决了,于是记录下来。

问题的前因后果如下:

近期工作要求,我从年后开始用Qt,之前一直用的是VS,在Qt方面我就是个初学者,现在边学边用了两个月吧(年后复工开始正式用Qt)。但因为我比较熟悉C/C++,对于Qt我上手很快,算下来工作进度也还可以。

但最近出了个问题,我编译项目的时候没问题,但运行的时候就会报错:

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

我通过百度,得知该问题的本质是访问到非法的地址,导致该问题出现的原因有下标越界、访问了未分配的空间等,网上给出了很多解决方法,但没有跟我这里出现一样情况的(也有可能我太菜了,犯的是很幼稚的错误)。因为网上的解决方案很容易搜出来,具体哪些方法就不列了。

下面说一下我写的程序的情况。

我用的是Qt5.7.1,MSVC-2013版,工具是QtCreator,编译方式debug。项目用几个.pri文件分为了几部分,其中有一个存放数据的部分,里面的一个文件定义了一些类,类的结构大体是这样的(下面的内容是把问题关键简化后的内容,之后出现的代码也如此,就不特意说明了):

/* Data.h */
// 所有类都定义和实现了构造、析构函数

class A
{
private:
    QString a_str;
public:
    QString GetAStr();    // 获取a_str
    void PrintA();        // 打印类A的内容
};

class B
{
private:
    QString b_str;
    QMap<QString, A*> b_map;
public:
    QString GetBStr();            // 获取b_str
    QMap<QString, A*> GetBMap();  // 获取b_map
    void PrintB();                // 打印类B的内容
};

/

/* Data.cpp */

// ...

QString A::GetAStr()
{
    return a_str;    // 1
//    QString temp_a = a_str;    // 2
//    return temp_a;    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值