client_socket类声明
class client_socket:public QTcpSocket
{
Q_OBJECT
public:
explicit client_socket();
virtual ~client_socket(){}
signals:
void socket_disconnect(int socket_id);
private :
QString socket_ip;
int blocksize;
int socket_id;
};
//QList<client_socket*> socket_list;
服务器里面将发起连接的客户端socket加入socket_list
void server::incomingConnection(int handle)
{
qDebug()<<"client_menu"<<handle;
client_socket *socket = new client_socket();
socket_list.append(socket);
socket->init_socket(handle);
socket->setObjectName(QString::number(handle,10));
connect(socket,SIGNAL(socket_disconnect(int)),this,SLOT(del_connect(int)));
}
//在执行删除连接时释放类存总是失败???
void server::del_connect(int socket_id)
{
qDebug()<<"dellete client connect!"<<socket_id<<socket_list.count();
foreach(client_socket *m_socket,socket_list)
{
if(m_socket->objectName() == QString::number(socket_id,10))
{
socket_list.removeOne(m_socket);
m_socket->close();
qDebug()<<"address1"<<m_socket;
delete m_socket;//释放内存失败?????
}
}
}
报错:
ASSERT: "d" in file ..\..\include/QtCore/../../src/corelib/tools/qscopedpointer.h, line 112
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
有人能解释下吗???
socket 内存