我正在创建一个简单的(ish)远程登录服务器,现在正在使用 valgrind 进行调试。代码运行良好,但 valgrind 抱怨程序终止时内存丢失......罪魁祸首是我创建新 QTcpSocket 的行:
void TelnetConnection::run()
{
tcpSocketPtr = new QTcpSocket(); // ** remove this due to parent error
if (!tcpSocketPtr->setSocketDescriptor(socketDescriptor)) {
emit error(tcpSocketPtr->error());
return;
}
}
我尝试将“this”传递给 QTcpSocket(),但随后我尝试连接的信号槽抱怨与不同的父级关联。这是问题吗?线索?还有……答案是什么?
我通过将 tcpsocketptr 分配为 0 来删除/释放它,如下所示。是对的吗?
void TelnetConnection::clientDisconnected()
{
tcpSocketPtr = 0; // ** Cure memory loss?
TelnetConnection::s_clientCount--;
Logger *log = Logger::instance();
log->record(Logger::Information,EVENTID_TELNET_DISCONNECTION,"Telnet client "+QString::number(m_clientNumber) +": Disconnecting");
QThread::quit(); // Exit ths event loop for this thread
}