怀念夏天 发表于 2024-5-20 10:31:45

shared_ptr的概念和一些特性调查

shared_ptr

概念

shared_ptr 是 C++11 中引入的一种智能指针,用于主动管理资源,特别是动态分配的内存。它属于头文件中定义的智能指针类之一,用于解决动态内存分配中的内存泄漏和资源生命周期管理题目。shared_ptr 通过引用计数机制来实现多个 shared_ptr 实例共享同一资源。
具有较好的安全性,可以避免内存泄漏和悬挂指针题目。
特性

线程安全的分析

shared_ptr 自身的引用计数是线程安全的,但指向的对象本身不是线程安全的。如果多个线程需要访问同一对象,需要额外的同步机制。
二进制兼容性

如果客户代码里有 new Bar,那么肯定不安全,因为 new 的字节数不够装下新 Bar。相反,如果 library 通过 factory 返回 Bar* (并通过 factory 来销毁对象)大概直接返回 shared_ptr,客户端不需要用到 sizeof(Bar),那么可能是安全的。
即把创建交给动态库,而不是由客户自己创建。
陈硕博客
shared_ptr的析构函数可以调用基类的没有设置为virtual的析构函数

#include #include class base{public:    base()    {      std::cout
页: [1]
查看完整版本: shared_ptr的概念和一些特性调查