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);
相关推荐
chouchuang15 小时前
day-027-面向对象-下
开发语言·python
粘稠的浆糊15 小时前
[AtCoder - abc465_d ]X to Y题解
数据结构·c++·算法
誰能久伴不乏15 小时前
C++11 随机数生成——告别 rand()
开发语言·c++
海清河晏11115 小时前
数据结构 | 二叉平衡搜索树
开发语言·数据结构·visual studio
kuonyuma15 小时前
java之动态代理
java·开发语言
KouFiee15 小时前
同名隐藏基础
开发语言·c++
z落落16 小时前
C# Task WaitAll、WaitAny、WhenAll、WhenAny
开发语言·c#
兰令水16 小时前
hot100【acm版】【2026.7.11/12打卡-java版本】
java·开发语言·数据结构·算法·职场和发展
从零开始的代码生活_16 小时前
C++ string 详解:常用接口、字符串算法与深拷贝实现
开发语言·c++·后端·学习·算法
m0_7381207216 小时前
PHP代码审计基础——面向对象(四)
android·开发语言·网络·安全·github·php