Qt5Cored!Qobject :: disconnect ...在0x0读取访问冲突
以下描述了这个问题以及我做了什么来“纠正”它们。 此运行时事件需要几个小时的时间来解决。 由于该网站是我最喜欢的信息来源之一,因此认为这可能会使某人受益。
我确信这个异常是由于我对QObjectCleanupHandler的误解而产生的。 对于QObjectCleanupHandler实际实现的任何建设性意见将不胜感激。
- 将QObjectCleanupHandler与QPointer <>添加到MDI子窗口和一个工人类。
在运行结束时:
会出现一个对话框,显示汇编堆栈数据。
检查QT Creator菜单中的调试日志:Windows Views Debugger Log
日志片段:
移到底部
::::
片段:
移到底部
dState从InferiorRunRequested(10)更改为InferiorRunOk(11)[master](1d84.1720):访问冲突 - 代码c0000005(第一次机会)s 0x67343a9c处的sException,代码:0xc0000005:读取访问冲突:0x0,flags = 0x0(第一次机会)在c: work build qt5_workdir w s qtbase src corelib kernel qobject.cpp中:2813在任何异常处理之前报告第一次机会异常。 这个例外可能会被预期和处理。 eax = 03f160f1 ebx = 00000000 ecx = 03f3b728 edx = feeefeee esi = 00000005 edi = 00000000 eip = 67343a9c esp = 0046d1b8 ebp = 0046d340 iopl = 0 nv up ei pl nz na po nc cs = 0023 ss = 002b ds = 002b es = 002b fs = 0053 gs = 002b
efl = 00010202 Qt5Cored!QObject :: disconnect + 0x2bc:2813 67343a9c 8b02 mov eax,dword ptr [edx] ds:002b:feeefeee = ???????? 在0x67343a9c处s异常,代码:0xc0000005:读取访问冲突:0x0,标志= 0x0(第一次机会)dNOTE:不正确的自发停止s已停止。 dState从InferiorRunOk(11)改为InferiorStopOk(14)[master]解析符号:Qt5Cored!QObject :: disconnect ...
源代码负责异常的代码片段:
QThread *thread = new QThread;
QPointer<vcSharedDataQt> worker = new vcSharedDataQt();
trackObject(worker);
worker->movetothread(thread);
trackObject()方法是QMdiSubWindow上的私有字段
class <form>
{
private:
QObjectCleanupHandler trackObject(QObject obj);
::: etc.
纠正措施:
源代码片段更改为:
QThread *thread = new QThread;
QPointer<vcSharedDataQt> worker = new vcSharedDataQt();
worker->movetothread(thread);
/ *删除所有类中的所有QObjectCleanupHandler实例。 * /
异常中定义的QT环境:QT KernelBase!RaiseException at 0x759fc41f
我有同样的问题一次,它出来了,我不得不重新启动QtCreator。 再次加载我的项目后,我的代码中没有改变任何东西,我再也没有遇到那个错误。
链接地址: http://www.djcxy.com/p/86833.html上一篇: Qt5Cored!Qobject::disconnect... read access violation at 0x0