面试真题

C++ · 中等 · 西山居

智能指针相关面试题,shared_ptr底层实现

中等 C++ 🎤 西山居
参考答案
结论:shared_ptr底层由一个原生指针和一个指向控制块的指针组成。原理:控制块含强引用计数、弱引用计数、删除器、分配器;对象构造时(或make_shared)分配控制块,强计数初1;拷贝shared_ptr时强计数原子加1,析构时减1,归零则调用删除器释放对象;弱计数归零释放控制块。make_shared将对象与控制块一块分配减少开销。weak_ptr共享控制块但不增加强计数,lock()尝试提升。注意循环引用时强计数不降,内存泄漏。
题目整理自公开面经,答案由校招宝自研生成,仅供参考