【C/C++面经】秋/春招技术岗面试基础篇-智能指针

本文介绍了C++中的智能指针,包括shared_ptr、unique_ptr、weak_ptr的作用和特性,强调了它们在内存管理中的重要性,以及如何避免内存泄漏和循环引用问题。
摘要由CSDN通过智能技术生成
1.智能指针
  • 定义:
    智能指针是一个,这个类的构造函数中传入一个普通指针,析构函数中释放传入的指针。智能指针的类都是上的对象,所以当函数(或程序)结束时会自动被释放
  • 智能指针的作用:
    智能指针的作用是防止忘记调用delete释放内存和程序异常的进入catch块忘记释放内存。另外指针的释放时机也是非常有考究的,多次释放同一个指针会造成程序崩溃(浅拷贝),这些都可以通过智能指针来解决。
  • 常用的智能指针
    智能指针在C++11版本之后提供,包含在头文件中:
    1、shared_ptr(重点)
    基于引用计数的智能指针。shared_ptr多个指针指向相同的对象。shared_ptr使用引用计数,每一个shared_ptr的拷贝都指向相同的内存。每使用他一次,内部的引用计数加1,每析构一次,内部的引用计数减1,减为0时,自动删除所指向的堆内存。shared_ptr内部的引用计数是线程安全的,但是对象的读取需要加锁。
    shared_ptr的内存模型:
    2、unique_ptr
    unique_ptr“唯一”拥有其所指对象,同一时刻只能有一个unique_ptr指向给定对象(通过禁止拷贝语义、只有移动语义来实现)。
    3、
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值