了解共享指针上的强引用计数是如何增加的?

Understanding how the strong reference count on shared pointers is increased?

我想了解 C++11 如何处理共享指针控制块上的强引用计数。我很乐意在调用析构函数时将它减一。

我的问题是在 运行 时间内增加动态分配的控制块上的强引用计数。在多个 运行 时间上下文的情况下,这对我来说看起来更加复杂。

程序如何从不同的上下文中找到相同的强引用计数?

编辑:我的问题不在于 shared_ptr 的实施。这是关于在多 process/thread/context 环境中使用它。

How a program can find the same strong reference count from a different context?

不能。不是来自不同的上下文,甚至也不是来自 相同的 上下文。你看,仅仅有原始对象的地址来找到那个引用计数是不够的——你实际上必须有引用计数本身的地址。也就是说,你需要std::shared_ptr对象的值!

因此,要在引用 T 对象时有多个上下文/对象/任何 "participate",您需要将相同 shared_ptr<T> 实例的副本传递给它们。他们不会自己找到它,也无法生成它。