1.shared_ptr 1.1 shared_ptr介绍 shared_ptr主要用于托管动态分配的内存。 在程序中动态分配了一块内存,这块内存可以是变量可以是对象,为了避免内存泄露,我们必须在整个程序的所有可能跑到的分支,保证这块内存不用了之后可以得到正确的释放。 普通指针使用起来麻烦,而
#include<iostream>#include<memory>voiduseUniquePtr(){std::unique_ptr<int>p=std::make_unique<int...
#include<memory>voidmanageResource(std::unique_ptr<int>ptr){// 使用资源}// ptr在此处自动销毁,资源被释放intmain(){autoptr=std::make_unique<int>(42);// 创建并初始化unique_ptrmanageResource(std::move(ptr));// 移动所有权到函数内// ptr现在为空,资源已在manageResource内部被释放return0;} s...
autoptr3 = ptr1->getShared(); std::cout <<"使用计数: "<< ptr1.use_count() << std::endl;// 输出 3 // ptr2和ptr3离开作用域,但对象不会被删除 } std::cout <<"使用计数: "<< ptr1.use_count() << std::endl;// 输出 1 // ptr1离开作用域,对象被删除 } 比较unique_ptr 和 ...
unique_ptr, 如其名字,是内存资源的唯一指针,不可以复制、赋值,只能转移。那具体使用包括创建、move和release操作。 1.1 创建unique_ptr指针的方法如下: std::unique_prt<int> unique_ptr_p1;//创建了一个没有指向任何内存的unique_ptr, 为nullptr std::unique_ptr<int> unique_ptr_p2(new int);//创建的指...
从名字上看shared_ptr是共享指针,意味着我们可以复制shared_ptr,复制出的智能指针指向同一个内部数据指针(即被智能指针包装的真正数据)。 构造shared_ptr 有多种方法可以构造shared_ptr,下面代码中有4种构造方式: int *p = new int(1); shared_ptr<int> sp1(p);// 通过普通指针p构造shared_ptr ...
// 1.创建一个指向整型对象的unique_ptr,默认使用delete运算符释放资源 std::unique_ptr<int> uptr(new int(10)); // 2.C++ 14 使用 std::make_unique std::unique_ptr<int> uptr = std::make_unique<int>(10); std::unique_ptr<MyClass> uptr = std::make_unique<MyClass>(); ...
在编程中,原始指针、shared_ptr和unique_ptr各有适用场景。首选使用引用,引用无法表示空值时,考虑使用指针。当指针无需调用者管理内存,可选择原始指针;反之,使用智能指针确保内存管理。对于大部分情况,std::unique_ptr是首选,它提供零成本的内存管理,且一次只能由一个变量持有。独特之处在于,它在...