有关SOCKET通信中内存泄漏问题
大家请看以下代码:
我是在主调函数中使用线程的方式发送消息:
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有误?还是说我在引用时出现什么问题?望请各位大虾帮帮忙,分不够可以再给
我是在主调函数中使用线程的方式发送消息:
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有误?还是说我在引用时出现什么问题?望请各位大虾帮帮忙,分不够可以再给
...全文
相关推荐
C实现基于Socket实现自定义协议通信
掌握C语言形式的Socket编程接又用法,能够正确发送和接收网络数据包; 分为客户端和服务端
Android App间多线程Socket通信实战详解
简介:在Android平台,App之间的复杂数据交换与实时通信可通过基于TCP/IP的Socket实现高效、双向的数据传输。本文深入介绍Socket通信机制,涵盖服务器端与客户端的构建、多线程并发处理、异常管理及安全性优化等内容。通过实际应用场景如文件传输、即时消息和游戏同步,帮助开发者掌握如何在Android中安全高效地实现支持多线程的Socket通信,并规避ANR和内存泄漏等问题。
C++11编写的socket通信程序
参考《深入应用C++11代码优化与工程级应用》一书编写的同步发,异步收socket通信程序,使用vs2013编译,代码测试通过。
socket通信MFC编程
对之前作者的代码进行改进。使用MFC编的socket通信代码,具有多线程功能,可满足多个客户端同时像服务器端接收或者发送消息。
vs2005 socket编程示范
简单的同步SOCKET示范 多线程请别学我用WIN的API,那样容易产生内存泄露


网络编程
