各位大侠,我新建了一个socket1类后,在这个socket1类的OnAccess下,新建了另一个socket2的内存,然后access 这个socket2,接下来创建线程,但线程结束后,新建的socket2内存没有执行释放,从而导致内存泄漏,我在线程执行完后,删除这个socket2后,就可以,但我不想在主程序执行删除,想在线程里删除占用的socket2空间,使程序不会导致过慢而假死,请教大虾们该如何做,下面我说一下大概的代码:
void OnAccess(int nErrorCode)
{
Socket* socket2= new Socket //Socket2定义在外面,这里为了代码清楚:执行完成后,在这里的内在没有释放,在toAcceptTread里我怎么都无法释放掉这块内存
Accept(*socket2,(SOCKADDR*)&lpsockvman,&sll);
hThread=CreateThread(NULL,0,&toAcceptTread,this,0,NULL);
}unsigned long __stdcall CSvrVman::toAcceptTread( LPVOID pParam )
{
CSendSock *sendbindsock=((Socket1*)pParam)->Socket2;
...
return 0;
}
void OnAccess(int nErrorCode)
{
Socket* socket2= new Socket //Socket2定义在外面,这里为了代码清楚:执行完成后,在这里的内在没有释放,在toAcceptTread里我怎么都无法释放掉这块内存
Accept(*socket2,(SOCKADDR*)&lpsockvman,&sll);
hThread=CreateThread(NULL,0,&toAcceptTread,this,0,NULL);
}unsigned long __stdcall CSvrVman::toAcceptTread( LPVOID pParam )
{
CSendSock *sendbindsock=((Socket1*)pParam)->Socket2;
...
return 0;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货