std::shared_ptr是一种支持共享所有权的智能指针。多个std::shared_ptr可以同时管理同一个对象,当最后一个std::shared_ptr被销毁时,资源才会被释放。 示例:用std::shared_ptr实现共享资源 #include<iostream> #include<memory> intmain%28%29{ //用shared_ptr创建一个共享的整数 std::shared_ptr<int>ptr1=s...
std::unique_ptr是一种独占所有权的智能指针。它确保一个对象只能被一个unique_ptr所拥有,这意味着不能复制unique_ptr,只能移动它。 主要特性 独占所有权: 一个unique_ptr不能被复制,只能被移动。 自动释放: 当unique_ptr离开作用域时,它所管理的对象会被自动删除。 零开销: 在大多数操作中,unique_ptr与原始...
#include <iostream>#include <memory> int main%28%29 { std::unique_ptr<int> ptr1 = std::make_unique<int>%2842%29; // 创建智能指针 std::cout << "ptr1 指向的值: " << %2Aptr1 << std::endl; // 转移所有权 std::unique_ptr<int> ptr2 = std::move%28ptr1%29; if %28%21pt...
任何时候只有一个unique_ptr实例可以拥有并管理某个对象。 当unique_ptr离开其作用域或被显式重置时,它会自动删除其所指向的对象。 不支持复制构造函数和赋值操作符,但可以通过转移语义(move semantics)进行移动构造和移动赋值,转移过程中原unique_ptr变为空指针,所有权转移到新unique_ptr。 可以直接或间接管理非数组...
shared_ptr作为另一个常用的智能指针,它和unique_ptr智能指针的理念有着很大的不同,它提供了对资源共享管理,即对资源所有权的共享(shared ownership),这就要求shared_ptr必须是一个可复制的对象。但是由于shared_ptr对象有很多个,而具体的对象资源只有一个这就要求所有共享对象资源的shared_ptrs指针中最终只能有一...
C++11 引入了智能指针来自动管理内存,主要包括 std::unique_ptr 和 std::shared_ptr。这两种智能指针各有特点,适用于不同的场景。 std::unique_ptr 特点:std::unique_ptr 是一种
C++11之智能指针的std::share_ptr与std::unique_ptr与c++98的auto_ptr,std::share_ptr:用法有:reset(T*p):智能指针指向新对象,原来指向的对象的引用计数减1(若减后为0则析构),指向的新对象的引用计数加1reset():原来指向的对象的引用计数-1,然后自己变成null。useco
1.删除器是lambda表达式,将匿名函数具名,也可直接使用匿名函数 2.用std::make_shared<>()或std::make_unique<> 不得行,莫得这种操...
智能指针是C++11中引入的一种特殊类型的指针,它们能够自动管理对象的生命周期,并在适当的时候释放内存。智能指针主要有三种类型:std::unique_ptr、std::shared_ptr和std::weak_ptr。 std::unique_ptr:独占式智能指针,表示对动态分配对象的独占所有权。同一时间内只能有一个std::unique_ptr指向该对象。当std::uniq...
std::weak_ptr是一种不控制对象生命周期的智能指针,它用来观察std::shared_ptr管理的对象,避免循环引用导致内存泄漏。 std::unique_ptr intArray(…