其实以前碰到过这个问题,但没有整理,今天又碰到了,结果又耽误了很长时间。

QT版本:5.7.0

症状是将一个带QString的结构体放入struct中,之后又保存到QMap中,结果在多线程运行时发生了许多莫名其妙的错误。

在运行过程中QThread对象没被销毁。movetothread的object对象也没有被销毁,也增加了线程同步,但数据就是发生了错误。

在考虑是不是线程执行完成后,系统回收了线程运行资源。但QMap确确实实是保存在object里面的啊。没有得到具体的原因。

 

之后解决思路是:

 

将放入容器中的元素修改成类并添加拷贝构造函数和赋值构造函数。

猜想是不是struct并不会像类一样有默认的拷贝构造函数,不会调用QString的拷贝构造。

 

相关文章:

  • 2022-01-18
  • 2021-12-10
  • 2021-10-31
  • 2022-02-01
  • 2022-12-23
  • 2022-01-10
  • 2021-06-07
  • 2021-09-28
猜你喜欢
  • 2021-06-12
  • 2022-12-23
  • 2021-08-28
  • 2022-12-23
  • 2021-12-07
  • 2021-12-29
  • 2022-12-23
相关资源
相似解决方案