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);
相关推荐
闲猫13 小时前
LangChain / Core components / Models
开发语言·python·langchain
ComputerInBook14 小时前
c 和 c++ 中的宏块(macro)
c语言·c++··宏块·宏指令
AA陈超15 小时前
004 T02 - 俯视角摄像机系统 设计文档
网络·c++·ue5·虚幻引擎
-银雾鸢尾-15 小时前
C#中的索引器
开发语言·c#
bu_shuo15 小时前
c与cpp中的argc和argv
c语言·c++·算法
蓝创精英团队15 小时前
VCPKG 跨平台C++ 库管理器
c++·vcpkg
Qlittleboy15 小时前
PHP的接口参数传递的过多,max_input_vars = 5000
开发语言·php
Aurorar0rua15 小时前
CS50 x 2024 Notes Algorithms - 02
c语言·开发语言·学习方法
en.en..16 小时前
冒泡排序与选择排序完整对比解析
开发语言·数据结构·算法·c#·排序算法
兰令水16 小时前
hot100【acm版】【2026.7.18打卡-java版本】
java·开发语言·算法