资源管理问题

MagiSu 2010-06-08 02:27:51
现有资源用RAII封装在类A中。类B,C,D通过A的接口访问资源。我的设计是在BCD中各自保存一个指向A的指针或者引用。但是这不可避免的产生A已经过了生存期,但是BCD却不会被通知,这样就产生segfault了。如果不引入A向BCD反馈的机制,如何防止上述的错误发生呢?
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
donkey301 2010-06-11
  • 打赏
  • 举报
回复
在BCD中A的指针初始值设为NULL,
A的指针过了生存期删除后也把A的指针赋值为NULL
在BCD中要用A的指针前判断是不是这个指针为NULL.
MagiSu 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sixbusy 的回复:]

观察者模式 吗
[/Quote]

对,观察者模式。
sixbusy 2010-06-09
  • 打赏
  • 举报
回复
观察者模式 吗
MagiSu 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 nut799 的回复:]

资源类A的生存期 没有设成全局变量,和程序一样长 ?难道 是局部变量?
[/Quote]

是的,需要在不用的时候释放。
nut799 2010-06-08
  • 打赏
  • 举报
回复
资源类A的生存期 没有设成全局变量,和程序一样长 ?难道 是局部变量?
MagiSu 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wave820930 的回复:]

不反馈的话 用全局变量记录生存状态 可行么?
[/Quote]

有道理。
huang_dy 2010-06-08
  • 打赏
  • 举报
回复
不反馈的话 用全局变量记录生存状态 可行么?
Poptang 2010-06-08
  • 打赏
  • 举报
回复
不做反馈,还真的没有啥好办法呢。。。因为A的释放是不确定的,检查机制也不太好使
一般这样的需求采用引用计数,当引用计数为0的时候才给删除。。。

3,405

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 设计模式
社区管理员
  • 设计模式
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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