有关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有误?还是说我在引用时出现什么问题?望请各位大虾帮帮忙,分不够可以再给
...全文
561 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhsxsh 2009-04-07
  • 打赏
  • 举报
回复
你在TRY ... CATCH 后面
if(p_stEnterCall)
{
delete p_stEnterCall;
p_stEnterCall=NULL;
}
说不定以面的代码出异常??
李_军 2009-03-21
  • 打赏
  • 举报
回复
stSendStr *pAgent=new stSendStr;//发送stSendStr数据结构体
你的这个pAgent,什么时候delete的,这里面怎么没找到
cnzdgs 2009-03-20
  • 打赏
  • 举报
回复
问题可能出现在其它部分,这段代码有一点问题,就是在访问全局变量时没有加锁,不过应该不会造成内存泄露。
jyh_baoding 2009-03-20
  • 打赏
  • 举报
回复
应该是调用的方式造成的吧
hust_terry 2009-03-20
  • 打赏
  • 举报
回复
从代码段来看是没有泄露的,看看别的地方有没有泄露吧
oyljerry 2009-03-20
  • 打赏
  • 举报
回复
new分配的delete释放了,你可以再检查一下其他地方,看是否所有的new等分配的数据都delete释放了
思危 2009-03-20
  • 打赏
  • 举报
回复
循环调用这个线程吗?把 stSendStr *pAgent=new stSendStr; 的动态分配方式改为全局变量试一下
cnzdgs 2009-03-20
  • 打赏
  • 举报
回复
不是只有new才会引起资源泄露。
百事烟 2009-03-20
  • 打赏
  • 举报
回复
newStr 哪来的?
lj22 2009-03-20
  • 打赏
  • 举报
回复
是循环调用这段线程,

数据体数据如下
typedef struct
{
char szSend[300];//存放发送的数据

}stSendStr;

代码其它地方没有用到new,delete

而且我改成最普通的发送send,就是不采用线程的方式发送,结果内存也是在涨的
xghuzd 2009-03-20
  • 打赏
  • 举报
回复
数据结构体 可能是问题所在:他和内存是否分配释放有关.
xghuzd 2009-03-20
  • 打赏
  • 举报
回复
stSendStr数据结构体
长什么样啊,看看先

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧