📄 subject_39338.htm
字号:
<p>
序号:39338 发表者:丁二 发表日期:2003-05-10 00:43:03
<br>主题:请教高手一个问题
<br>内容:有如下CBase类,它是基类,无继承父类:<BR>他使用到另一个类CAsia<BR>CBase::CBase()<BR>{<BR> CAsia *lpCAsia = new CAsia();<BR> delete lpCAsia;//注意这句话<BR>}<BR>CBase::~CBase()<BR>{<BR>}<BR><BR>这样一个类运行于程序中时,没有错误,但是将delete lpCAsia移动至析构函数中时却发生错误:<BR>CBase::CBase()<BR>{<BR> CAsia *lpCAsia = new CAsia();<BR>}<BR>CBase::~CBase()<BR>{<BR> delete lpCAsia;//注意这句话<BR>}<BR>产生了内存泄露!!并且出现这样的调试错误信息<BR>irst-chance exception in EnumAsiaArea.exe (KERNEL32.DLL): 0xC0000005: Access Violation.<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>回复者:Neil Gan 回复日期:2003-05-10 01:45:16
<br>内容:You have a member variable "lpCAsia", "CAsia *lpCAsia = new CAsia();" hide the member variable. you allocate memory for the local lpCAsia, when constructor quits, this memory leaks. And, because the member varialbe (lpCAsia) never be initialized, in the destructor when you try to delete it, access violation.<BR><BR>Rule: Never use the names of global/member varialbes as the names of local variables.<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 + -