QMap::freeData()上的Qt核心
Qt core on QMap::freeData()
我在内核上有以下堆栈跟踪:
#1 0x..... in raise()
#2 0x..... in abort()
#3 0x..... in xehInterpretSavedSigaction()
#4 0x..... in xehExceptionHandler()
#5 <signal handler called>
#6 0x..... in QMap<int, myClass#1>::freeData(QMapData*) ()
#7 0x..... in myClass#2::myClass#2Method()
#8 0x..... so on and so forth
使用QMap的代码如下所示:
foreach (myClass::sturct1 conn, myClass3->getMap())
{
if (conn == x)
{
return conn;
}
}
foreach行是使用getter方法检索QMap的位置。有人知道QMap::freeData()的作用吗?我能在互联网上找到的唯一参考资料是QMap.h的实际来源。看起来该方法是在QMap析构函数中使用的。方法名称让我相信它正在释放数据。无论如何,我想如果我对freeData()有更多的了解,我可能会找到并修复这个核心。
您不需要了解任何有关freeData
的信息。myClass3
中映射字段的内容已损坏,getMap()
浅层复制已损坏的映射实例。只要与freeData
一起工作的对象没有被错误代码损坏,它就可以正常工作。
由于您试图从多个线程访问数据,您必须:
-
从每个线程中共享数据结构的一个单独实例进行操作。关键是:您必须在"拥有"源的线程中创建一个副本。然后,您可以将副本传递给另一个线程并在那里使用它。请参阅此答案以获取示例代码。
-
使用互斥锁保护对数据结构的访问。
相关文章:
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何找出GDB的SIGTRAP核心转储的根本原因
- C++映射分割错误(核心转储)
- 如何在MS Visual Studio 2019中运行QT UI
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用Qt C++计算类似Git的SHA1哈希
- Qt focusObjectChanged example?
- 如何在cpp文件之间切换窗口?在Qt中
- 在c++中初始化矩阵时出现分段错误(核心转储)
- qt C++命令行代码中的分段错误(核心转储)
- QMap::freeData()上的Qt核心
- Qt AbstractItemModel删除行并删除原因核心