首页
学习
活动
专区
圈层
工具
发布

面试官:为什么大厂拒绝使用shared_ptr(shared_ptr vs intrusive_ptr)?

阶段 特点 问题 优化 早期 大量使用 shared_ptr 捕获 this 循环引用、内存泄漏 改成 weak_ptr 中期 shared_ptr 在百万 IOPS 下性能瓶颈 5~15% CPU...原始版大量 std::shared_ptr 回调闭包循环引用;锁竞争高 全面迁移 intrusive_ptr ObjectCacher 老版本使用 shared_ptr 高频拷贝带来 10% CPU overhead 新版部分改 intrusive_ptr,部分用裸指针 BlueStore shared_ptr、shared_ptr...回调 librados 客户端 API 仍暴露 shared_ptr 兼容性考虑 对外 shared_ptr,内部 intrusive_ptr 2.1 问题背景 Ceph 没有完全放弃 shared_ptr...如何保证线程安全 • 与 shared_ptr 对比 • shared_ptr 内部引用计数是 原子操作,在多个线程中复制、销毁智能指针是安全的。

21510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    boost 智能指针 shared_ptr

    但只有 shared_ptr 是最接近普通指针的一种智能指针,他具有一些非常良好的特性,比如计数器等等,使用 shared_ptr 可以让我们不用花费精力在内存回收上。...其他的一些指针与 shared_ptr 的区别如下表: 本文主要介绍 shared_ptr 的一些特性,以后如果你使用到 boost 库,那么用到这个智能指针也会是最多的。...2、boost::shared_ptr不需要手动的调用类似release****方法: 它不像侵入式实现的智能指针一样需要手动的调用类似release方法,全部用由shared_ptr内部的计数器自动增减...例如std::vector IntVec,使用shared_ptr方式为std::vectorshared_ptr > IntptrVec. 4、boost::shared_ptr...boost::shared_ptr ptr_obj001(new MyClass()); cout ptr_obj001.use_count() << endl; boost::shared_ptr

    52610

    善用shared_ptr,远离内存泄漏(文末福利)

    《为何优先选用unique_ptr而不是裸指针?》中说到,如果有可能就使用unique_ptr,然后很多时候对象是需要共享的,因此shared_ptr也就会用得很多。...shared_ptr允许多个指向同一个对象,当指向对象的最后一个shared_ptr销毁时,该对象也就会自动销毁。因此,善用shared_ptr,能够远离内存泄漏。...存放于容器中的shared_ptr 如果你的容器中存放的是shared_ptr,而你后面又不再需要它时,记得使用erase删除那些不要的元素,否则由于引用计数一直存在,其对象将始终得不到销毁,除非容器本身被销毁...*/ std::shared_ptr sp2(p); return 0; } 这样会导致两个shared_ptr管理同一个对象,当其中一个被销毁时,其管理的对象会被销毁...总结 以上就是shared_ptr基本内容,一般来说,规范使用shared_ptr能很大程度避免内存泄露。注意,shared_ptr提供,*,->操作,不直接提供指针运算和[]。

    2K10

    《深入理解 C++ 智能指针:unique_ptr、shared_ptr 与 weak_ptr 全解析》

    智能指针的引入极大地简化了资源管理,尤其在 C++11 以后,unique_ptr、shared_ptr 和 weak_ptr 被标准化并广泛应用于现代 C++ 项目中。...", "r")); 四、shared_ptr —— 引用计数型智能指针 4.1 基本用法 cpp复制编辑std::shared_ptr p1 = std::make_shared(5...std::shared_ptr a; }; 此时对象永不释放!...七、智能指针的内部实现机制(简要) 7.1 shared_ptr 的核心结构 txt复制编辑shared_ptr │ ▼ ControlBlock ───► 引用计数(use_count)...shared_ptr 弱引用、观察者模式 weak_ptr 原始指针无所有权需求 原始指针(只读) 建议优先使用顺序: cpp复制编辑unique_ptr > shared_ptr > raw pointer

    1.2K10

    C++11 shared_ptr 原理与详细教程

    一、shared_ptrstd::shared_ptr 是 C++11 引入的另一种智能指针,与 unique_ptr 的独占所有权不同,它实现了共享所有权语义。...多个 shared_ptr 实例可以同时管理同一个对象,当最后一个持有该对象的 shared_ptr 被销毁时,对象才会被自动释放。...原理2.1 引用计数机制shared_ptr 的核心是引用计数(reference count):每个被管理的对象都有一个关联的引用计数器,记录当前有多少个 shared_ptr 指向它当创建新的 shared_ptr...());使用 weak_ptr 解决循环引用在双向链表、树等数据结构中,父节点持有子节点的 shared_ptr,子节点持有父节点的 weak_ptr线程安全注意事项shared_ptr...当资源仅需独占时,使用 unique_ptr(性能更优)优先考虑 unique_ptr,仅在必要时才使用 shared_ptr七、总结std::shared_ptr 是 C++ 中实现共享所有权的智能指针

    73510
    领券