讨论:关于boost中share_ptr的资源释放问题
ingor 2008-11-16 10:11:57 shared_ptr封装了
T * px; // contained pointer
detail::shared_count pn; // reference counter
而shared_count 封装了
sp_counted_base * pi_;
这里shared_count有两个主要的派生类
sp_counted_impl_p
sp_counted_impl_pd(提供了删除工具类)
删除对象的过程:
调用 pn的析构函数调用了sp_counted_base的release,进而调用了dispose();该函数为虚函数,因此会转而调用 sp_counted_impl_p或者sp_counted_impl_pd的dispose;那里要么调用delete,要么调用客户提供的删除函数。
这样的结构安排有什么值得深思的,我不太清楚为什么要进行这样的设计,是否有点太过于复杂了?
或者这里的各个实现细节是为了满足什么样的不同条件?
欢迎大家热烈讨论。