【C++11】智能指针与动态内存
【C++11】智能指针与动态内存
系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、智能指针类型
- 共享指针(shared_ptr)
- 弱指针(weak_ptr)
- 独占指针(unique_ptr)
前言
C++中的动态内存管理是通过一对运算符来完成的:new,在动态内存中为该对象分配空间并返回一个指向该对象的指针。delete,接受一个动态对象的指针,销毁该对象,并释放指向的内存。
动态内存的使用很容出现问题,因为确保在正确的时间释放内存是及其困难的。有时候我们忘记释放内存,就产生了内存泄漏;有时候尚有指针引用内存的情况下我们就释放了,在这种情况下就会产生引用非法内存的指针。
为了更容易,也更安全的使用动态内存,C++11标准库提供了俩种智能指针(smart pointer)来管理动态对象。智能指针的行为类似常规指针,重要的区别是它负责自动释放指向的对象。
一、智能指针类型
共享指针(shared_ptr)
这是一种更强大和灵活的智能指针,它可以与其他shared_ptr共享所有权。当最后一个shared_ptr离开作用域或被重置时,它所拥有的对象将被自动删除。
弱指针(weak_ptr)
这是一种不拥有对象所有权的智能指针,它指向由shared_ptr管理的对象(伴随类)。weak_ptr的存在不会增加对象的引用计数,也不会阻止其被销毁。它们主要用于避免循环引用问题。
独占指针(unique_ptr)
这是一种简单但强大的智能指针,它可以在堆上创建一个对象并拥有其所有权。当unique_ptr离开作用域或被重置时,它所拥有的对象将被自动删除。
最新文章
- Video.js国际化配置
- 关于笔记的保存问题
- 数据分析法宝,一个 SQL 语句查询多个异构数据源
- 【LeetCode:1334. 阈值距离内邻居最少的城市
- 基于springboot实现小学家校一体“作业帮”系统项目【项目源码】计算机毕业设计
- 零售业巨头的跨区域EDI成功案例:洞悉全球化趋势
- 一款IT团队都在用的私有化知识库,技术开放,还开源了!
- 2023代码小技巧
- Kotlin之控制语句和表达式
- 一些可以参考的文档集合15
- 台式机使用无线蓝牙笔记
- SSH全能终端工具mobaXterm(远程工具)使用教程
- 【计算机网络笔记】IP子网划分与子网掩码
- 智慧化城市内涝的预警,万宾科技内涝积水监测仪
- Linux上C++通过LDAP协议使用kerberos认证AES加密连接到AD服务器
- 探究元素隐藏的几种方式及其区别
- C++11 constexpr 常量表达式应用场景