本视频详细介绍了C++中的智能指针,包括std::unique_ptr、std::shared_ptr和std::weak_ptr。视频中解释了智能指针的基本概念、工作原理以及它们在内存管理中的应用,帮助开发者更好地理解和使用这些工具。, 视频播放量 380、弹幕量 2、点赞数 9、投硬币枚数 7、收藏人数 10
C++11提供了三种智能指针:std::shared_ptr, std::unique_ptr, std::weak_ptr,使用时需添加头文件#include。 shared_ptr shared_ptr 使用引用计数,每一个 shared_ptr 的拷贝都指向相同的内存。每引用它一次,内部的引用计数加1,每析构一次,内部的引用计数减1,减为0时,删除...
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是一种独占的语义,即只允许一个智能指针引用裸指针,这区别于std::shared_ptr允许多个shared_ptr引用同一个裸指针,它没有引用计数,它的性能比shared_ptr会高一点。 在用法上std::unique_ptr和std::shared_ptr是类似的,主要的不同是std::unique_ptr之间的赋值需要通过std::move实现。 在code2 ...
C++11引入了智能指针,它们是管理动态分配内存的强大工具。本文将详细介绍两种最常用的智能指针: std::unique_ptr 和 std::shared_ptr。 std::unique_ptr 概述 std::unique_ptr 是一种独占所有权的智能指针。它确保一个对象只能被一个 uniq
条款20:使用std::weak_ptr作为一个类似std::share_ptr但却能悬浮的指针 有一个矛盾,一个灵巧指针可以像std::shared_ptr (见条款 19)一样方便,但又不参与管理被指对象的所有权。换句话说,需要一个像std::shared_ptr但又不影响对象引用计数的指针。这类指针会有一个std::shared_ptr没有的问题:被指的对象有...
如果需要共享所有权,应使用 std::shared_ptr。 不支持循环引用:由于 std::unique_ptr 不是为共享所有权设计的,它无法处理循环引用问题。在循环引用的场景中,应使用 std::shared_ptr 和std::weak_ptr 组合来管理资源。 移动语义限制:std::unique_ptr 只支持移动语义,不能被复制。这意味着你需要使用 std::...
智能指针是C++11中引入的一种特殊类型的指针,它们能够自动管理对象的生命周期,并在适当的时候释放内存。智能指针主要有三种类型:std::unique_ptr、std::shared_ptr和std::weak_ptr。 std::unique_ptr:独占式智能指针,表示对动态分配对象的独占所有权。同一时间内只能有一个std::unique_ptr指向该对象。当std::uniq...
std::unique_ptr<int>sp=std::make_unique<int>(12345); 以上三种方式均可,其中,方法三是C++14新增的,通过std::make_unique方法来创建std::unique_ptr对象。 std::unique_ptr禁止复制语义 和std::shared_ptr区别:unique_ptr是移动构造(unique_ptr不可拷贝和赋值,但可以被移动,unique_ptr禁止复制语义,拷贝构造...
std::weak_ptr是一种不控制对象生命周期的智能指针,它用来观察std::shared_ptr管理的对象,避免循环引用导致内存泄漏。 std::unique_ptr intArray(…