⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_15920.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:15920 发表者:古天龙 发表日期:2002-09-23 19:23:34
<br>主题:我用CPtrList来管理所有的SOCKET连接,在OnClose事件后删除SOCKET对象,还要更新CPtr
<br>内容:我用CPtrList来管理所有的SOCKET连接,在OnClose()事件后要在对象外删除SOCKET对象,还要更新CPtrList中的数据,应该怎样做?如果在OnClose()中直接调用相关的函数就会出现内存异常。<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:Aikoc 回复日期:2002-09-24 08:55:19
<br>内容:应该都可以的,你贴代码出来看看.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xyg 回复日期:2002-09-24 11:40:17
<br>内容:当然不能在OnClose()中删除SOCKET对象了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:古天龙 回复日期:2002-09-25 13:16:06
<br>内容:有问题的代码片段如下:<BR><BR>CServeSock::OnAccept(INT nErrorCode)<BR>{<BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;CSessionSock* psock = new CSessionSock;<BR>&nbsp;&nbsp;Accept(*psock);<BR>&nbsp;&nbsp;m_pDlg-&gt;m_listSession.AddTail(psock);<BR>&nbsp;&nbsp;……<BR>}<BR><BR>&nbsp;&nbsp;……<BR>CSessionSock::OnClose(INT nErrorCode)<BR>{<BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;m_pDlg-&gt;CloseSock(this);<BR>&nbsp;&nbsp;……<BR>}<BR><BR>CMyDlg::CloseSock(CAsyncSocket* psock)<BR>{<BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;psock-&gt;ShutDown();<BR>&nbsp;&nbsp;psock-&gt;Close();<BR>&nbsp;&nbsp;delete psock;&nbsp;&nbsp;&nbsp;&nbsp;&lt;------- 这个地方老是报错。<BR>&nbsp;&nbsp;//从LIST中删除psock<BR>&nbsp;&nbsp;m_listSession.RemoveAt(m_listSession.Find(psock));<BR>&nbsp;&nbsp;……<BR>}<BR><BR>我也知道delete psock是处在OnClose()的调用中,所以删除会报错,请各位高手<BR>帮我想办法解决这个内存回收的问题,不胜感激!<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:Aikoc 回复日期:2002-09-25 13:44:51
<br>内容:这样当然不行的,<BR>你将this 传出了,<BR>--------------------------<BR>&nbsp;&nbsp;m_pDlg-&gt;CloseSock(this);<BR>&nbsp;&nbsp;……<BR>--------------------------<BR><BR>又在传出的地方将其delete.那你叫m_pDlg-&gt;CloseSock怎么返回哑<BR>--------------------------<BR>&nbsp;&nbsp;delete psock;&nbsp;&nbsp;&nbsp;&nbsp;&lt;------- 这个地方老是报错。<BR>--------------------------<BR><BR>可以改为<BR>CSessionSock::OnClose(INT nErrorCode)<BR>{<BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;//从LIST中删除psock<BR>&nbsp;&nbsp;m_listSession.RemoveAt(m_listSession.Find(this));<BR>&nbsp;&nbsp;ShutDown();<BR>&nbsp;&nbsp;Close();<BR>&nbsp;&nbsp;delete this;<BR>&nbsp;&nbsp;……<BR>}<BR><BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -