QNetworkReply以DEBUG模式粉碎程序,并在ntdll.dll中出现错误

时间:2019-03-08 13:35:07

标签: c++ qt

我在Qt上有一个简单的程序。在RELEASE模式下编译时,它可以正常工作,而在DEBUG模式下,则可以崩溃。该错误仅在Windows下可重现,在Linux下可正常运行。 到目前为止,我已经测试过:

  1. MSVC 2015 x32 Qt5.9.6
  2. MSVC 2015 x32 Qt.5.11.3
  3. MinGW x32 Qt.5.9.6

该问题发生在文件ntdll.dll中

这是main.cpp的内容

#include <QCoreApplication>
#include <QtNetwork>

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);
    qDebug() << Q_FUNC_INFO << "Hello buddy from program start";
    QNetworkRequest request(QUrl("https://qt.io/"));
    QPointer<QNetworkAccessManager> manager = new QNetworkAccessManager();
    QPointer<QNetworkReply> reply = manager->get(request);
    QObject::connect(reply, &QNetworkReply::finished, &a, &QCoreApplication::quit);
    int result = a.exec();
    qDebug() << "Goodbye buddy";
    return result;
}

还有* .pro文件。

TEMPLATE = app
QT +=  network widgets
CONFIG += c++14 network
SOURCES += main.cpp

这是程序输出。

int __cdecl main(int,char *[]) Hello buddy from program start
Goodbye buddy

这意味着程序成功到达main函数的结尾并随后崩溃。

有什么想法吗?那是一个众所周知的错误吗?

更新

我已经删除了多余的包含对象,添加了QPointer和程序输出。

1 个答案:

答案 0 :(得分:0)

使用QObject::deleteLater()代替删除。