代码之家  ›  专栏  ›  技术社区  ›  Joseph

qt/c++退出代码1073741819(程序崩溃与异常代码C00 000)

  •  1
  • Joseph  · 技术社区  · 15 年前

    我的程序崩溃了。我得到一个“Program.exe已经停止工作”的windows弹出窗口,其中提到我的异常代码是c000005。当我返回到Qt中应用程序的输出时,它显示:

    C:\Users\Me\Desktop\project\project-build-desktop\debug\project.exe exited with code -1073741819
    

    行是:

    db=newDb;
    

    它位于类的构造函数中 wndChildWhatever 这是一个主窗口。 newDb 在构造函数参数中定义为 DatabaseManager *newDb db 是wndChild的私有成员,定义为 DatabaseManager *db . 这个数据库地址在我的程序中到处传递,而这个 华盛顿州

    但是,在打开/构造窗口时,不会发生异常/崩溃。它发生在窗户关上的时候。更奇怪的是,这不是每次都发生。有时你可以打开窗口,关闭它没有问题,然后再打开它,在第二次关闭,它崩溃。其他时候,它发生在你第一次试图关闭它。

    我真的不知道这里发生了什么,希望有人能帮忙!

    4 回复  |  直到 15 年前
        1
  •  2
  •   asveikau    15 年前

    断层线:

    db=newDb;
    

    你说:

    听起来像是你的 this 指针可能无效。也就是说,如果这发生在一个方法中 foo 你在做什么 wndChild->foo() wndChild 是无效的指针。因此当它访问 db 相对于 wndChild儿童 0xc0000005 ,Windows表示指针解引用错误。)

        2
  •  0
  •   Jeremy Friesner    15 年前

    很可能导致崩溃的不是db=newDb行本身,而是一些稍后执行的其他代码,如果不设置db值,则不会执行这些代码。查看wndChildWhatever类中的另一个代码,看看它是如何处理(db)值的。也许它在做一些淘气的事情,比如在其他代码还在使用它的时候删除它?

        3
  •  0
  •   hmuelner    15 年前

        4
  •  -3
  •   Reynaldo Silva E Silva    12 年前

    尝试删除生成目录并重新生成它。它对我有效,但每次我向任何类添加新函数或成员时都需要这样做。我知道为什么。

    推荐文章