vc++调用AfxBeginThread 内存增长 迅猛 直至软件报错

dengchangwen11 2012-08-08 05:35:34
代码如下:
CSocket recClient;
while(1)
{
m_StatBar->SetText("等待客户端的连接...",1,0);
if(! m_Server.Accept(recClient))
AfxMessageBox("m_server.Accepst() error"+pdlg->GetError(GetLastError()));
m_StatBar->SetText("连接成功!",1,0);
CSectInfo *m_SectInfo=new CSectInfo();
m_SectInfo->clicksocket.Attach(recClient);
AfxBeginThread(ChuLiClientDataThread,(LPVOID)m_SectInfo);
if (pdlg->bStop)
{
AfxMessageBox("暂停!");
break;
}
if (pdlg->m_ListInfo.GetCount()>50)
{
pdlg->m_ListInfo.ResetContent();//清空数据
}
}
线程函数大概代码:
UINT ChuLiClientDataThread(LPVOID lParam)
{
CSectInfo* pSectInfo= (CSectInfo*)lParam;
CYZMServerDlg* pdlg=(CYZMServerDlg*)AfxGetApp()->GetMainWnd();
.
.
.
delete pSectInfo;
pSectInfo=NULL;
return 1;
}


大致就上面这样一个结构,内存增长很快,调用CreateThread也是一样,_afxbeginthread也无效。求高手指点,这到底是什么情况,困惑已久了。
...全文
212 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LuciferStar 2012-10-16
  • 打赏
  • 举报
回复
CSectInfo *m_SectInfo=new CSectInfo();
一直在new啊!
lcsaintlee 2012-10-16
  • 打赏
  • 举报
回复
你在while循环内部的结尾加一个Sleep(10)看看,否则循环太频繁肯定吃CPU
dengchangwen11 2012-08-09
  • 打赏
  • 举报
回复
有哪位高手可以帮下子忙的,我困惑呀。求助呀。
dengchangwen11 2012-08-08
  • 打赏
  • 举报
回复
屏蔽了,也是不行的,内存还是会增长的。
  • 打赏
  • 举报
回复
你先把你的线程中的代码屏蔽掉 看看是否还泄露
dengchangwen11 2012-08-08
  • 打赏
  • 举报
回复
你是怀疑这个地方有内存泄露还是?我就算不用new 创建内存,内存也是不断增长的。
tubo_true 2012-08-08
  • 打赏
  • 举报
回复
m_StatBar->SetText("等待客户端的连接...",1,0);
if(! m_Server.Accept(recClient))
AfxMessageBox("m_server.Accepst() error"+pdlg->GetError(GetLastError()));
m_StatBar->SetText("连接成功!",1,0);
CSectInfo *m_SectInfo=new CSectInfo();

设断点到 CSectInfo *m_SectInfo=new CSectInfo(); 看看

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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