std::unique_ptr 和 std::shared_ptr 是 C++ 标准库中提供的两种智能指针类型,它们都用于自动管理动态分配的内存,但它们在所有权管理、性能和适用场景上存在显著区别。以下是它们的主要区别: 所有权管理 1.1 std::unique_ptr 独占所有权:std::unique_ptr 表示对资源的独占所有权,即同一时间只能有一个 unique_pt...
std::shared_ptr是C++标准库提供的智能指针类型之一,它通过引用计数技术来追踪指向动态分配内存对象的所有...
共享同一块内存std::shared_ptr<int>ptr2=ptr1;// 增加引用计数std::cout<<ptr1.use_count()<<std::endl;// 输出: 2// 通过弱引用指针weak_ptr解决
unique_ptr: 独占所有权:unique_ptr持有对象的独占所有权,即任何时候只有一个unique_ptr可以指向一个特定对象。 禁止拷贝:unique_ptr禁止拷贝操作,只支持移动操作,这确保了对象的独占性。 自动销毁:当unique_ptr离开作用域时,它所指向的对象会被自动delete,从而确保资源的正确释放。shared_ptr: 共...
当然,我们也可以自定义符合实际场景的释放规则。 值得一提的是,和 shared_ptr 指针不同,为 unique_ptr 自定义释放规则,只能采用函数对象的方式。例如:*///自定义的释放规则structmyDel {voidoperator() (int*p) {deletep; } }; unique_ptr<int, myDel> p6(newint);return0; }...
unique_ptr shared_ptr weak_ptr 它们都是在内存头文件中声明。 auto_ptr 从C ++ 11开始,此类模板已被弃用。 unique_ptr是具有相似功能但具有改进的安全性的新工具。 auto_ptr是一个智能指针,用于管理通过新表达式获取的对象,并在auto_ptr本身被销毁时删除该对象。
C++有定义在<memory>中, unique_ptr、shared_ptr与weak_ptr等智能指针(smart pointer)。可以对 动态资源进行管理,保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。三类智能指针的用…
在C++ 中,std::unique_ptr和std::shared_ptr都支持自定义删除器(deleter),但它们在实现和使用上有一些关键区别。以下是它们的异同点: 相同点 支持自定义删除器 两者都允许通过模板参数或构造函数参数指定删除器,用于管理资源释放(如文件句柄、内存、网络连接等)。
第一小节:介绍系列视频的大纲, 以及内容第二小节: 介绍shared_ptr第三小节:介绍shared_ptr的两种用法,会通过代码给带大家进行演示第四个节:介绍unique_ptr第五小节: 介绍unique_ptr的两种用法,会通过代码给带大家进行演示第六小节:怎么在面试中给面试官进行表达,