QTcpSocket * QTcpServer::nextPendingConnection () [virtual]
套接字创建为服务器的子级,这意味着它是 当QTcpServer对象被销毁时自动删除 。它是 完成时,明确删除对象仍然是一个好主意 用它,以避免浪费记忆。
在我的应用程序中,QTcpServer
存在了很长时间(当连接关闭时它与主机断开连接,但除非程序退出,它永远不会被销毁),并且它接受了大量的QTcpServer::nextPendingConnection
并且需要很多记忆。
如何在切换到下一个待处理对象之前删除旧的QTcpSocket对象以节省内存,同时避免双重删除?
在这种情况下delete
是否正常?
答案 0 :(得分:3)
在这种情况下删除是否正常?
是的,多亏了Qt的对象设计的聪明才智。
特别是,QTcpSocket从(最终)派生自Object,而QObject析构函数方法最后包含此代码:
if (d->parent) // remove it from parent object
d->setParent_helper(0);
因此,删除QTcpSocket对象将自动从其父对象的子列表中删除QTcpSocket(在本例中为QTcpServer),因此在销毁QTcpServer对象时不会出现双删除。