Han*_* S. 5 c++ boost boost-smart-ptr
对于boost::weak_ptr该operator<定义,使其能够在关联容器中使用.
我的问题是:几个weak_ptr对象的排序顺序是否稳定,即使它们中的一些变为零的引用数量?容器不是那么乱std::set吗?
例:
using namespace boost;
shared_ptr<A> sptrA1(new A);
weak_ptr<A> wptrA1 = sptrA1;
weak_ptr<A> wptrA2;
{ // begin Scope 1
shared_ptr<A> sptrA2(new A);
wptrA2 = sptrA2;
assert(wptrA1 < wptrA2); // assert #1
}
assert(wptrA1 < wptrA2); // assert #2
Run Code Online (Sandbox Code Playgroud)
wptrA2范围1之前和之后是否处于相同的状态?在当前的实现中boost::weak_ptr,operator<比较指向内部引用计数跟踪结构的指针.在删除所有强引用和弱引用之前,不会释放此结构,因此operator<即使由于缺少强引用而已释放指向的用户数据,它仍然可以安全使用.
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |