在一个定时器当中用了CSocket,多次运行发现在任务管理器当中本进程进程当中占用的内存以4k的速度不断增加,并且不能降下来,机器开了一晚上增加到了40多m
代码为
void CMyDlg::OnTimer(UINT nIDEvent)
{
CSocket socket1;
if (m_ihost>3)
{
m_ihost=0;
}
socket.Create();
m_bhost[m_ihost]=socket1.Connect("10.10.10.120",139);
m_ihost++;
socket1.Close();
CDialog::OnTimer(nIDEvent);
}
将CSocket 定义到计时器外面也一样,
当把Create运行到计时器外面时不出现内存增加的问题,但是不能得到正确的结果,只有第一次的结果是TRUE,以后都是FALSE,
希望高手没给个提示
代码为
void CMyDlg::OnTimer(UINT nIDEvent)
{
CSocket socket1;
if (m_ihost>3)
{
m_ihost=0;
}
socket.Create();
m_bhost[m_ihost]=socket1.Connect("10.10.10.120",139);
m_ihost++;
socket1.Close();
CDialog::OnTimer(nIDEvent);
}
将CSocket 定义到计时器外面也一样,
当把Create运行到计时器外面时不出现内存增加的问题,但是不能得到正确的结果,只有第一次的结果是TRUE,以后都是FALSE,
希望高手没给个提示
在 AttachHandle 过程中,会 new 一个 CSocketWnd 实例 ( 基于 CWnd 派生 ) ,这里将这个实例称之为 socket window ,进一步理解为它是存放所有 sockets 的消息池 ( window 消息),请仔细查看,这里 socket 后多加了一个 s ,表示创建的多个 socket 将共享一个 消息池 。 是不是attach与detach的操作引起的,这种对象不要频繁的去create...
socket.Create(); 有问题的,同一个socket怎么能多次create?