总的来说,原始指针,就像是自己手动控制所有东西,容易出错但有时候非常必要。shared_ptr,是让东西可以...
#include<memory>intmain(){// 创建一个包含5个int的数组std::unique_ptr<int[]>arr(newint[5]);// 获取原始指针数组int*rawPtr=arr.get();// 使用原始指针数组进行操作for(inti=0;i<5;++i){rawPtr[i]=i;}// 打印数组元素for(inti=0;i<5;++i){std::cout<<rawPtr[i]<<" ";}retur...
shared_ptr、unique_ptr的用法,笔者认为还是要从这两个指针的设计原理出发,深度剖析它的实现过程,知其...
std::cout << "Value: " << ptr1->GetValue() << std::endl; // 创建另一个 shared_ptr,共享 ptr1 所指向的对象 std::shared_ptr<MyClass> ptr2(ptr1); // 当 ptr1 和 ptr2 都离开作用域时,MyClass 对象会被自动释放 } // 2 共享 int main() { std::shared_ptr<MyClass> ptr = st...
各种指针里,原始指针最常用,其次是unique_ptr和shared_ptr,weak_ptr是对shared_ptr的补充,应用场景较少。 智能指针只能解决一部分问题:独占/共享所有权指针的释放和传输;并没有从根本上解决C++的内存泄漏问题 独占指针 unique_ptr 在给定的时刻,只能有一个指针管理内存,当指针超出作用域后,内存自动释放 ...
unique_ptr的产生,就是为了解决,raw pointer 的new和delete配对使用问题。对于raw pointer来说,在new了之后,在delete之前往往会出现程序异常,进而导致delete没有被释放,如此以来就会产生内存泄漏。引入了unique_ptr之后,可以有效的减轻C++程序员对于raw pointer的使用负担。参考官方文档: ...
std::unique_ptr是 C++11 引入的智能指针,用于自动管理动态分配的对象,确保在智能指针超出作用域时自动释放资源。release、reset和move是std::unique_ptr的三个常用操作,它们有不同的用途和效果。 release release是std::unique_ptr的一个成员函数,用于释放对所管理对象的所有权,并返回指向该对象的原始指针。调用rele...
// 通过原始指针创建 unique_ptr 实例 std::unique_ptr<Task> taskPtr(new Task(23)); //通过 unique_ptr 访问其成员 int id = taskPtr->mId; std::cout << id << std::endl; return 0; } 1. 2. 3. 4. 5. 6. 7. 8. 9.
unique_ptr std :: unique_ptr是在C ++ 11中开发的,用于替代std :: auto_ptr。unique_ptr是具有类似功能的新工具,但具有改进的安全性(无假拷贝分配),添加功能(删除器)和数组支持。 它是一个原始指针的容器。 它明确地防止复制其包含的指针,正如正常赋值那样会发生,即它只允许底层指针的一个所有者。