我有一个应用程序开始在各个点投入适合。它是在很久以前使用Qt库的第一个版本编写的。喜欢更新它,但这还不在卡片中。在测试应用程序的一部分时,我收到了意外的崩溃:
Unhandled exception at 0x00a220db in MyApp.exe:
0xC0000005: Access violation reading location 0x00000000.
我可以看到的应用程序代码(Qt lib源代码不能用于调试,所以它只是一个反汇编)。
MyEvent myEvent = new MyEvent(str1, int, str2);
QApplication::postEvent(parent(), myEvent);
在受影响区域调用堆栈:
MyApp.exe!QGList::append() + 0x6b bytes
MyApp.exe!QList<QPostEvent>::append() + 0x2f bytes
MyApp.exe!QApplication::postEvent() + 0x55a bytes
> MyApp.exe!SomeClass::writeTestName(const char * format=0x00f6c2b8, ...) Line 386 + 0x15 bytes
如果我检查myEvent和parent(),两者似乎都是有效的。什么是将事件添加到的postEvent方法,并且假设它是一个Qt内部,它看起来是什么,为什么它会失败 - 是否需要进行一些原始程序员可能错过的初始化?