******关于资源回收,我的方法是否有问题

shuiher 2008-04-14 06:17:49
m_obArry是一个CObArry类的对象
m_obArry中存放的是一些从CItemBase类派生的不同类的对象
下面的资源释放是否正确呢
int nCount=m_obArry.GetSize();
for(int index=0;index<nCount;index++)
{
CItemBase*pItem=(CItemBase*)m_obArry.GetAt(index);
delete pItem;//需不需要把这些对象转换成相对应的类的对象再删除?
}
m_obArry.RemoveAll();
...全文
78 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
scq2099yt 2008-04-15
  • 打赏
  • 举报
回复
这个处理本身没问题,只是放的位置需要是析构函数中
zhoujianhei 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 BlueDog 的回复:]
CItemBase必需是虚析构函数才行
[/Quote]
wflishh 2008-04-15
  • 打赏
  • 举报
回复
应该是不会有问题的吧。你可以用boundcheck来查一查很好用的。
mr.zhoux 2008-04-15
  • 打赏
  • 举报
回复
需要去删除. 你保存的应该是对象的指针链表,CObArray只是给你的指针容器作用会自动释放你的指针但不会释放你指针指向的内存空间

#define safe_del(p) {if(p!=NULL){delete p;p=NULL;}}

..

for(int index=0;index <nCount;index++)
{
CItemBase*pItem=(CItemBase*)m_obArry.GetAt(index);
safe_del(pItem);
}
neusoftpp 2008-04-15
  • 打赏
  • 举报
回复
我觉得一定是先调用基类的析构函数!在调用派生类的!还有一点就是你自己不定义析构函数。系统也会自己给默认一个。析构就是来做清理工作的。跟中析构函数。看内存释放情况!
殇迪 2008-04-15
  • 打赏
  • 举报
回复
delete pItem;//需不需要把这些对象转换成相对应的类的对象再删除?
--------------------------------------------
delete的时候会自动调用类的析构函数
其实你可以跟踪下,看delete的时候到底是调用的基类的析构函数还是派生类的析构函数;
===============================================================

如果基类和派生类都没有需要从堆上分配内存的成员,是不是就没必要去实现析构函数了?
---------------------------------------------------------------------------
应该是这样,你可以查下析构函数的作用——就是为了在对象销毁的时候自动去销毁对象中动态分配的资源
lijianli9 2008-04-14
  • 打赏
  • 举报
回复
shui_her,看你定义的类里面有没有指针之类的成员定义.
shuiher 2008-04-14
  • 打赏
  • 举报
回复
谢谢楼上几位热心的兄弟
如果基类和派生类都没有需要从堆上分配内存的成员,是不是就没必要去实现析构函数了?
jameshooo 2008-04-14
  • 打赏
  • 举报
回复
同意2楼
BlueDog 2008-04-14
  • 打赏
  • 举报
回复
CItemBase必需是虚析构函数才行
wmouse 2008-04-14
  • 打赏
  • 举报
回复
我的经验是不用转换,因为调用的实际是派生类的析构。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧