嵌入式C/C++语言相关知识——智能指针shared_ptr、unique_ptr、weak_ptr

嵌入式C/C++语言相关知识——智能指针shared_ptr、unique_ptr、weak_ptr

一、博客声明

  又是一年一度的秋招,怎么能只刷笔试题目呢,面试题目也得看,想当好厂的牛马其实也不容易呀O(∩_∩)O。注意:这篇博客大部分是来自网上的资源,我只是为了加深印象,总结和抄一遍,没错,就是抄一遍。


二、智能指针

  智能指针是一种C++的类模板用于自动管理动态分配的内存资源。与普通指针不同,智能指针可以在对象不再使用时自动释放内存,从而避免内存泄漏。智能指针通过构造函数和析构函数来管理对象的生命周期,当智能指针超出作用域或者被显式重置时,会自动调用适当的析构函数来释放资源。

使用智能指针的好处:极大地简化了内存管理,减少了手动管理内存的复杂性和错误。

下面介绍常用的智能指针类型,需要包含#include <memory>

1、shared_ptr

  被称为共享智能指针:一个共享所有权的智能指针,多个shared_ptr可以指向同一个对象,只有当最后一个shared_ptr超出作用域时,资源才会被释放。该指针使用引用计数来管理资源的生命周期。

   特点
    1、共享所有权:多个指针管理一个对象
    2、线程安全:内部的弱引用机制时线程安全的,可以在多线程环境中安全使用。

   适用场景:共享资源管理、复制对象关系、避免内存泄漏。

2、unique_ptr

  被称为独占智能指针:一个独占所有权的智能指针,确保任何时候,只有一个智能指针可以拥有所指向的对象。当unique_ptr超出作用域时,它会自动释放资源,该指针不能被复制,但是可以移动。

   特点
    1、独占所有权:只有一个指针可以管理该对象。
    2、不可复制:只支持移动操作,不运行复制

   适用场景:独占资源管理、临时对象、避免动态内存管理的复杂性。

2、weak_ptr

  被称为弱引用智能指针:是与shared_ptr配合使用的智能指针,不会增加引用计数。它用于解决shared_ptr之间循环引用的问题。当需要访问由shared_ptr管理的对象但不希望影响其生命周期时,可以使用weak_ptr.

   特点
    1、不参与所有权管理:不会影响所指向对象的引用计数,因此不会延长对象的生命周期。
    2、打破循环引用:与shared_ptr结合使用,避免循环引用导致内存泄漏。
    3、安全访问:通过 lock() 方法,可以安全地获取一个指向同一对象的 shared_ptr。

   适用场景:解决循环引用、观察者模式、资源临时访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值