gpt4 book ai didi

c++ - boost::shared_ptr,ctor 中的一个原子递增,但 dtor 中的两个原子递减?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:39 24 4
gpt4 key购买 nike

我正在单步执行 boost::shared_ptr 的源代码,并且在构造时引用计数器调用一次原子增量。但是,在销毁时我看到原子递减被调用了两次,连接到弱引用?

但是,这怎么行呢?在构建时递增一次,在销毁时递减两次,一次在 release() 中,一次在 weak_release() 中?

最佳答案

shared_ptr 必须维护两个引用计数。一个用于共享实例,一个用于可能通过 weak_ptr 引用。有了这个,weak_ptr 能够增加 shared_ptr 中的弱引用计数并保持 shared_ptr 事件(即使在分配的对象被释放之后)以确定从 weak_ptr 到 shared_ptr 的有效转换。

关于c++ - boost::shared_ptr,ctor 中的一个原子递增,但 dtor 中的两个原子递减?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002667/

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