gpt4 book ai didi

c++ - 了解 C++ std::shared_ptr

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:22 25 4
gpt4 key购买 nike

我有一个问题,请看下面这个简单的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

sptr1sptr3 对象如何知道引用计数在打印 4 时递增。

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

最佳答案

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

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

关于c++ - 了解 C++ std::shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52926249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com