有关SOCKET通信中内存泄漏问题
lj22 2009-03-20 11:10:44 大家请看以下代码:
我是在主调函数中使用线程的方式发送消息:
stSendStr *pAgent=new stSendStr;//发送stSendStr数据结构体
strncpy(pAgent->szSend,newStr,300);
_beginthread(Thread_SendAgentNum,0,(void*)pAgent);
然后在线程中发送消息:
void Thread_SendAgentNum(void* param)
{
stSendStr *p_stEnterCall=(stSendStr *)param;
if(p_stEnterCall==NULL)
return;
else
{
int sendNumCount = send(theglobal.m_hSocket,p_stEnterCall->szSend,strlen(p_stEnterCall->szSend),0);
if( sendNumCount < 1)//发送数据失败
{
closesocket(theglobal.m_hSocket);//关闭socket
theglobal.m_hSocket=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); //重新初始化socket
int iRet=connect(theglobal.m_hSocket,(LPSOCKADDR)&theglobal.sockAddr,sizeof(theglobal.sockAddr));
if(0 == iRet)//连接成功
{
send(theglobal.m_hSocket,p_stEnterCall->szSend,strlen(p_stEnterCall->szSend),0);
}
}
if(p_stEnterCall)
{
delete p_stEnterCall;
p_stEnterCall=NULL;
}
_endthread();
}
这段代码有问题吗?为什么在运行时间久后会提示内存不足?是不是使用_beginthread有误?还是说我在引用时出现什么问题?望请各位大虾帮帮忙,分不够可以再给