有关SOCKET通信中内存泄漏问题

lj22 lj22 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
大家请看以下代码:
我是在主调函数中使用线程的方式发送消息:
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有误?还是说我在引用时出现什么问题?望请各位大虾帮帮忙,分不够可以再给
...全文

相关推荐

评论 12
收藏 已收藏
分享
返回顶部
lj22
网络编程 18,356 成员 64,161 内容