Qt我们应该删除在QNetworkAccessManager SIGNAL上收到的QNetworkReply *回复吗?

时间:2012-04-27 07:45:35

标签: c++ qt

说我们有:

pManager  = new QNetworkAccessManager();
QObject::connect(pManager, SIGNAL(finished(QNetworkReply*)),this, SLOT(finishedSlot(QNetworkReply*)));

 void finished(QNetworkReply* reply);

如果我们删除finished内的回复,我们会收到段错误。这是否意味着我们不会释放它?

3 个答案:

答案 0 :(得分:6)

来自http://doc.qt.io/qt-5/qnetworkreply.html

  

注意:请勿删除连接到此信号的插槽中的对象。使用deleteLater()。

答案 1 :(得分:3)

来自finished信号的QNetworkAccessManager文档:

  

注意:不要删除连接到此信号的插槽中的回复对象。使用deleteLater()。

确实,你不应该删除它,而是调用deleteLater

答案 2 :(得分:0)

困惑。但这会删除插槽末尾的QNetworkReply实例而不是QNetworkAccessManager实例。这实际上在两个项目上都有效吗,还是我们还需要在QNetworkAccessManager本身上显式删除deleteLater(以及如何最好地访问它,假设我们不需要第二个信号槽连接)。关于这一点,文档没有任何说明。打算建立一个测试案例,其中包含数千个调用,但董事会中的其他人肯定知道。 dck