Qt5Cored!Qobject :: disconnect ...在0x0读取访问冲突

以下描述了这个问题以及我做了什么来“纠正”它们。 此运行时事件需要几个小时的时间来解决。 由于该网站是我最喜欢的信息来源之一,因此认为这可能会使某人受益。

我确信这个异常是由于我对QObjectCleanupHandler的误解而产生的。 对于QObjectCleanupHandler实际实现的任何建设性意见将不胜感激。

- 将QObjectCleanupHandler与QPointer <>添加到MDI子窗口和一个工人类。

  • 运行DEBUG应用程序。
  • 在运行结束时:

    会出现一个对话框,显示汇编堆栈数据。

    检查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

    下一篇: Access Violation (unhandled exception)