subject_50251.htm

来自「vc」· HTM 代码 · 共 18 行

HTM
18
字号
<p>
序号:50251 发表者:有株·乔布斯 发表日期:2003-08-19 01:28:43
<br>主题:请帮我看看我这小段代码里有内存泄漏的问题吗?刚开始学,多多关照
<br>内容:另外:怎么判断自己的代码有没有内存泄漏的问题<BR><BR>原吗如下:<BR><BR># include &lt;iostream&gt;<BR>class SimpleCircle<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleCircle();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleCircle(int const newRadias);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleCircle(SimpleCircle &amp;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~SimpleCircle();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int GetRadias () const{return *itsRadias;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void SetRadias (int const newRadias){*itsRadias=newRadias;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const SimpleCircle &amp; operator++();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const SimpleCircle operator++(int);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleCircle &amp; operator=(const SimpleCircle &amp;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int *itsRadias;<BR>};<BR><BR>SimpleCircle::SimpleCircle()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;itsRadias=new int;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*itsRadias=5;<BR>}<BR><BR>SimpleCircle::SimpleCircle (int const newRadias)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;itsRadias=new int;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*itsRadias=newRadias;<BR>}<BR><BR>SimpleCircle::~SimpleCircle ()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;delete itsRadias;<BR>&nbsp;&nbsp;&nbsp;&nbsp;itsRadias=NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;std::cout&lt;&lt;"Destroyed!!";<BR>}<BR><BR>SimpleCircle::SimpleCircle(SimpleCircle&amp; rhs)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;itsRadias=new int;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*itsRadias=*(rhs.itsRadias);<BR>}<BR><BR><BR>const SimpleCircle &amp; SimpleCircle::operator++()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;++*itsRadias;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return *this;<BR>}<BR><BR>const SimpleCircle SimpleCircle::operator++(int theFlag)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;SimpleCircle temp(*this);<BR>&nbsp;&nbsp;&nbsp;&nbsp;(*itsRadias)++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return temp;<BR>}<BR><BR>SimpleCircle&amp; SimpleCircle::operator=(const SimpleCircle&amp; rhs)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (this==&amp;rhs)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return *this;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*itsRadias=*(rhs.itsRadias);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return *this;<BR>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>int main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;SimpleCircle c1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;SimpleCircle c2(9);<BR>&nbsp;&nbsp;&nbsp;&nbsp;std::cout&lt;&lt;c1.GetRadias()&lt;&lt;"\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;std::cout&lt;&lt;c2.GetRadias()&lt;&lt;"\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;c1.SetRadias(10);<BR>&nbsp;&nbsp;&nbsp;&nbsp;std::cout&lt;&lt;c1.GetRadias()&lt;&lt;"\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;++c1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;std::cout&lt;&lt;c1.GetRadias()&lt;&lt;"\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;SimpleCircle c3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;c3=c1++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;std::cout&lt;&lt;c3.GetRadias()&lt;&lt;"\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;std::cout&lt;&lt;c1.GetRadias()&lt;&lt;"\n";<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>回复者:木一 回复日期:2003-08-19 02:03:25
<br>内容:检查你动态分配内存的地方,也就是new的地方<BR><BR>你这个程序没有内存泄漏的问题<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>
回复者:有株·乔布斯 回复日期:2003-08-19 02:27:34
<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 + =
减小字号Ctrl + -
显示快捷键?