gpt4 book ai didi

c++ - 共享指针如何工作?

转载 作者:IT老高 更新时间:2023-10-28 12:32:50 25 4
gpt4 key购买 nike

共享指针如何知道有多少指针指向该对象? (shared_ptr,在这种情况下)

最佳答案

基本上,shared_ptr 有两个指针:一个指向共享对象的指针和一个指向包含两个引用计数的结构的指针:一个用于“强引用”或拥有所有权的引用,一个用于“弱引用”或没有所有权的引用。

当您复制 shared_ptr 时,复制构造函数会增加强引用计数。当你销毁一个 shared_ptr 时,析构函数会递减强引用计数并测试引用计数是否为零;如果是,析构函数删除共享对象,因为没有 shared_ptrs 指向它了。

弱引用计数用于支持weak_ptr;基本上,任何时候从 shared_ptr 创建一个 weak_ptr,弱引用计数都会增加,而任何时候破坏弱引用计数都会减少。只要强引用计数或弱引用计数大于零,引用计数结构体就不会被破坏。

实际上,只要强引用计数大于零,共享对象就不会被删除。只要强引用计数或弱引用计数不为零,引用计数结构体就不会被删除。

关于c++ - 共享指针如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2802953/

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