了解C std :: shared_ptr

前端之家收集整理的这篇文章主要介绍了了解C std :: shared_ptr前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题,请通过以下简单的C程序,
int main( )
{
 shared_ptr<int> sptr1( new int );
 shared_ptr<int> sptr2 = sptr1;
 shared_ptr<int> sptr3;
 shared_ptr<int> sptr4;
 sptr3 = sptr2;

 cout<<sptr1.use_count()<<endl;
 cout<<sptr2.use_count()<<endl;
 cout<<sptr3.use_count()<<endl;

 sptr4 = sptr2;

 cout<<sptr1.use_count()<<endl;
 cout<<sptr2.use_count()<<endl;
 cout<<sptr3.use_count()<<endl;

 return 0;
}

输出

3
3
3
4
4
4

sptr1和sptr3对象如何知道引用计数在打印4时递增.

据我所知,引用计数是每个shared_ptr对象中的变量.

解决方法

As far as i know reference count is a variable in each shared_ptr object.

不,引用计数存储在堆上的“控制块”中.每个shared_ptr实例都指向相同的“控制块”并使其保持活动状态(直到所有实例和与它们共享所有权的所有weak_ptr实例都已死).

原文链接:https://www.f2er.com/c/117657.html

猜你在找的C&C++相关文章