QT 4.86有内存泄漏?
我有个QT5.31的小工程,在VS2010和VS2012下编译运行都没有任何问题。但是我想把它迁移到VS2008+4.86下去,因为这样更轻量级,且4.86是QT4的最后一个版本,应该是经典版本,Bug很少才对。整个工程我就改了一处代码,就是connect语法变了,从:
connect(network_manager, &QNetworkAccessManager::finished, this, &LoginDialog::ReadXML);
变成:
connect(network_manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(ReadXML(QNetworkReply*)));
VS2008顺利编译通过,运行也有相应的效果。但是效果显示之后,提示有问题:
Unhandled exception at 0x66fdf3b1 (QtCored4.dll) in NeobeV6.exe: 0xC0000005: Access violation reading location 0xfeeefefa.
点击Break按钮,停在:
struct Q_CORE_EXPORT QListData {
inline int size() const { return d->end - d->begin; }
}
后来我追踪了一下,结果是C:\Qt\4.8.6_2008\src\network\access\qnetworkreplyimpl.cpp 的 QNetworkReplyImplPrivate::finished() 函数的最后一句语句有问题:
void QNetworkReplyImplPrivate::finished() {
// 其它语句
resumeNotificationHandling(); // 这句!!!
}
看着名字,还是应该与connect的语法有关系,请各位大大指教一下,非常感谢!