c++ shared_ptr 常见构造函数

直观的就是说,shared_ptr对象,可以好几个指针指向同一片内存空间。

当最后一个对象失效的时候,这篇内存空间就会释放。

常见构造方法1:

cpp 复制代码
std::shared_ptr<MyClass> ptr(new MyClass);
//或者利用另外一个shared_ptr
std::shared_ptr<MyClass> ptr1(new MyClass);
std::shared_ptr<MyClass> ptr2(ptr1);
//有的时候,我们希望对象在销毁的时候,不仅是调用delete释放内存空间,还需要释放一些其他内存
std::shared_ptr<MyClass> ptr(new MyClass, deleteElement<MyClass>);
//deleteElement可以是一个自定义的,在释放空间时进行业务处理的函数,例如
cpp 复制代码
    template<typename T>
    void deleteElement(T* p)
    {
        if(p!=nullptr)
        {
            p->~T();//先对对象进行析构
            free_Memory(sizeof(p),reinterpret_cast<void*>(p));
            //再将内存还给内存池
        }
    }
    std::shared_ptr<MyClass> ptr(new MyClass, customDeleter);
相关推荐
zzzll1111几秒前
深入理解 Java HashMap:从原理到实战
java·开发语言·哈希算法
猫猫不是喵喵.8 分钟前
Java开发高频面试题汇总(通俗易懂版)
java·开发语言·java高频面试
k4m7v2pz15 分钟前
用 rust-verb-shell 重写进程管理:从 game.sh 到 .rvs 的迁移实录
开发语言·后端·rust
2603_9658966217 分钟前
JavaScript 对象零基础详解|属性、方法、遍历、增删改查
开发语言·javascript·ecmascript
别动我齐刘海18 分钟前
从0到1独立搭建机器人软件系统
c++·人工智能·神经网络·opencv·目标检测·机器学习·机器人
dear_bi_MyOnly22 分钟前
数组字符串深度解析:从入门到卡牌实战
开发语言·c++·学习
正在走向自律26 分钟前
从 Python 基础到大模型落地:读《深入浅出 Python 人工智能》,吃透 AI 工程化 CRUD 实战
开发语言·人工智能·python·机器学习·知识脉络
被摘下的星星43 分钟前
Java 中 .length、.length() 以及 .size() 的区分
java·开发语言
geovindu1 小时前
CSharp: State Pattern
开发语言·后端·c#·.net·状态模式·行为模式
小欣加油1 小时前
Leetcode2058 找出临界点之间的最小和最大距离
数据结构·c++·算法·leetcode·职场和发展