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);
相关推荐
superman超哥5 分钟前
序列化性能优化:从微秒到纳秒的极致追求
开发语言·rust·开发工具·编程语言·rust序列化性能优化·rust序列化
Henry Zhu1235 分钟前
Qt Model/View架构详解(一):基础理论
开发语言·qt
Swift社区6 分钟前
Java 实战 - 字符编码问题解决方案
java·开发语言
灰灰勇闯IT6 分钟前
【Flutter for OpenHarmony--Dart 入门日记】第3篇:基础数据类型全解析——String、数字与布尔值
android·java·开发语言
天天睡大觉7 分钟前
python命名规则(PEP8编码规则)
开发语言·前端·python
重生之我是Java开发战士9 分钟前
【Python】基础语法入门:变量,数据类型,运算符
开发语言·python
csbysj202010 分钟前
PHP 数组排序
开发语言
2501_9445215911 分钟前
Flutter for OpenHarmony 微动漫App实战:底部导航实现
android·开发语言·前端·javascript·redis·flutter·ecmascript
txinyu的博客15 分钟前
unique_ptr
linux·服务器·c++
Java程序员威哥15 分钟前
使用Java自动加载OpenCV来调用YOLO模型检测
java·开发语言·人工智能·python·opencv·yolo·c#