subject_21396.htm
来自「一些关于vc的问答」· HTM 代码 · 共 24 行
HTM
24 行
<p>
序号:21396 发表者:阳东旭 发表日期:2002-11-16 23:12:14
<br>主题:请教各位大虾!怪问题,头都大了。
<br>内容:我写了个类,在类中自已分配了内存(new),在析构函数中清理分配的内存(delete).<BR>编写了拷贝构造函数。<BR>重载操作符+、-、*、/。形式是<BR>myclass operator 操作符(const myclass &x,const myclass &y)<BR>{ myclass result;<BR> ......<BR> ......<BR> return result;<BR>}<BR>+、-、*运算均很正常,唯/不正常。经跟踪发现,在/中,在return之前,result的结果很正常,拷贝构造函数也正常工作,可是在析构函数(result的)中出现了问题,我自已分配的内存丢了!指针是指向了别处!当然我自已清理内存的代码就无法运行了。可是在+、-、*中,一切都很正常。这究竟是什么原因呢?为什么内存会丢呢?请各位不吝赐教!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:无非 回复日期:2002-11-17 12:53:12
<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>
<font color=red>答案被接受</font><br>回复者:目不识丁 回复日期:2002-11-17 16:21:48
<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>
回复者:阳东旭 回复日期:2002-11-17 19:31:04
<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 + =
减小字号Ctrl + -
显示快捷键?