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

📄 subject_29812.htm

📁 vc
💻 HTM
字号:
<p>
序号:29812 发表者:晨风 发表日期:2003-02-13 19:13:27
<br>主题:关于CList释放内存的问题!!
<br>内容:见下面程序:<BR>class A<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;int* mem;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;n;<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;A()<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem=NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;A(int number)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n=number;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem=new int[n];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(mem,0,sizeof(int)*number);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;A(const A&amp; A1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n=A1.n;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem=new int[n];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(mem,0,n);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;~A()<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete []mem;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem=NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>};<BR><BR>main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A t1(2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CList&lt;A,A&amp;&gt; list;<BR>&nbsp;&nbsp;&nbsp;&nbsp;list.AddTail(t1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;list.RemoveAll();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>}<BR><BR>运行时出错。请高手给与指教。<BR><BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:mr_oydy 回复日期:2003-02-13 22:24:36
<br>内容:A&amp; operator=(const A&amp; other){<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(&amp;other==this)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return *this;<BR>&nbsp;&nbsp;&nbsp;&nbsp;delete[] mem;<BR>&nbsp;&nbsp;&nbsp;&nbsp;mem = new int[other.n];<BR>&nbsp;&nbsp;&nbsp;&nbsp;memcpy(mem, other.mem, n);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return *this;<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>
回复者:mr_oydy 回复日期:2003-02-13 22:27:38
<br>内容:/* afxtempl.h */<BR>template&lt;class TYPE, class ARG_TYPE&gt;<BR>POSITION CList&lt;TYPE, ARG_TYPE&gt;::AddTail(ARG_TYPE newElement)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT_VALID(this);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CNode* pNewNode = NewNode(m_pNodeTail, NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pNewNode-&gt;data = newElement;<BR>....<BR>...<BR>}<BR><BR>// pNewNode-&gt;data = newElement; (赋值操作)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:未出手的飞刀 回复日期:2003-02-13 23:33:51
<br>内容:<BR>先new出一块内存然后构造再赋值,从中也见mfc的容器设计确有不足之处。<BR><BR>若用stl就没类似问题<BR>A t1(2);<BR>std::list&lt;A&gt; lst ;<BR><BR>lst.push_back(t1) ;<BR>lst.clear() ;
<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 + -