问题描述
- Socket重载Accept,内存泄漏
-
Socket在监听时,重载Accept函数,要重新New一个Socket,小弟不知道在哪里释放它,结束程序时老是有内存泄漏,求大神指教啊!
贴上代码:
void CListenSocket::OnAccept(int nErrorCode)
{try { CServerSocket *s=new CServerSocket(); Accept(*s); s->mwnd = mwnd; } catch(CException *pEx) { } CSocket::OnAccept(nErrorCode);
}
提示内存泄漏为此行代码:
CServerSocket *s=new CServerSocket();
解决方案
在该套接字结束时shutdown或者closesocket,消灭之。
解决方案二:
没有close掉吧,
解决方案三:
close掉就行了啊
解决方案四:
这是局部变量,不方便你访问,声明一个可以get到的socket,在你需要的时候delete掉
解决方案五:
把他挂到外部,最好是可以自己需要的时候就获得,这样方便delete
时间: 2024-10-31 05:29:39