Qt堆内存损坏

我正在写一个Qt 4.6应用程序(没有Qtdevise器),当我closures程序时,我从Visual Studio中得到这个错误:

Windows已经在Test.exe中触发了一个断点。

这可能是由于堆的损坏,这表明Test.exe或任何它已加载的DLL中的错误。

这也可能是由于用户在Test.exe有焦点时按F12。

输出窗口可能有更多的诊断信息。

这里是源代码:

  • Main.cpp http://pastebin.com/DeUvZSHU
  • TesterWindow.h http://pastebin.com/SEVr8x40
  • TesterWindow.cpp http://pastebin.com/MYUtZZGw
  • Device.h http://pastebin.com/bXKxVrmW
  • Device.cpp http://pastebin.com/H1kMcRes
  • ExtWiiMote.h http://pastebin.com/uX3HT9Yw
  • ExtWiiMote.cpp http://pastebin.com/p2TKZdHv

(你不能编译它,我不能共享使用的库)

怎么了?

Solutions Collecting From Web of "Qt堆内存损坏"

在你声明的ExtWiiMote.h

 QLabel* dots[3][3]; 

并在ExtWiiMote.cpp使用dots[3][0]...

修正dots阵列大小,可能你会没事的。

上个月我有同样的错误,但由于许多不同的问题可能导致它,我不知道我的答案会帮助你。

这是由没有虚拟析构函数的派生类(Child)引起的。 每次调试器进入Child的析构函数时都会弹出错误。 由于我在工作,无法访问网站获取源代码,我无法检查这个。

希望这可以帮助你