Effective C++(三):资源管理

news2025/2/2 22:45:27

个人读书记录,不适用教学内容。

目录

条款13:以对象管理资源

条款14:在资源管理类中小心copying行为

条款15:在资源管理类中提供对原始资源的访问

条款16:成对使用new和delete时要采取相同形式

条款17:以独立语句将newed对象置入智能指针


条款13:以对象管理资源

说白了就是依赖于C++的析构函数自动调用机制确保资源被释放。

由此想到智能指针。RAII(Resource Acquisition Is Initialization)

条款14:在资源管理类中小心copying行为

简言之,就是对于RAII类或者就是普通类的复制,可采取如下方式:

  • 禁止复制:将copying行为声明为private
  • 对资源使用引用计数法(shared_ptr)
  • 深拷贝
  • 转移资源拥有权(参考C++11的std::move)

条款15:在资源管理类中提供对原始资源的访问

条款16:成对使用new和delete时要采取相同形式

说白了就是:用new就用delete,用new []就用delete [],不能互相串着用。

这里值得学习的是单一对象和对象数组的内存布局,以及delete如何知道内存存有多少对象。这个决定了有多少个析构函数必须被调用。

这只是一个例子,在不同编译器可能实现不同。

对于delete,原文如下:

”由你来告诉delete:如果你使用delete加上[],delete便认定指针指向一个数组,否则它便认定指针指向单一对象“

"假如内存布局如上,delete会读取若干内存并将它解释为数组大小,然后开始多次调用析构函数,浑然不知他所处理的那块内存不是个数组"

条款17:以独立语句将newed对象置入智能指针

说白了就是尽量要这样写代码:

而不要这样:

因为你不知道priority()内部会不会抛出异常从而跳出这个语句,导致内存泄漏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cubeIDE开发, STM32实时时钟(RTC)写入及读取日历时间开发要点

一、RTC简介 实时时钟的缩写是RTC(Real_Time Clock),核心是晶振,晶振频率一般为32768 Hz 。它为分频计数器提供精确的与低功耗的实基信号。它可以用于产生秒、分、时、日等信息。为了确保时钟长期的准确性,晶振必须正常工作,不能够…

中小企业的公司财务管理系统

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 本课题研究对象是中小企业财务管理系统,设计采用自己开发实践和所学知 识,系统部分主要分为以下…

【圣诞树代码】送她六棵圣诞树,祝她圣诞快乐~(送女朋友必备!)

“ 六棵圣诞树,满足她圣诞愿望 ” 距离25号圣诞节只有几天了,程序员有属于程序员的浪漫,这不来了~ 如果一颗圣诞树不够,那就送她六棵,祝她圣诞快乐~ 直接上效果图—— 01 02 03 04 05 06 代码如下: 第…

[1184]FinalShell下载安装

文章目录FinalShell介绍初步使用更换背景图连接记录删除FinalShell介绍 官网:http://www.hostbuf.com/ http://www.hostbuf.com/?install_fs FinalShell 简介: FinalShell 相当于 xshell ftp 的组合,即:FinalShell xshell f…

【计算机考研408】中断处理流程

中断请求 中断源是请求CPU中断的设备或事件,一台计算机允许有多个中断源。每个中断源向CPU发出中断请求的时间是随机的。 中断响应判优 中断响应优先级是指CPU响应中断请求的先后顺序。当多个中断源同时提出请求时,需通过中断判优逻辑来确定响应哪个中…

Python asyncore socket客户端开发基本使用

目录 介绍 1.定义类并且继承 asyncore.dispatcher 2.实现类中的回调代码 调用父类方法 创建 socket 对象 连接服务器 3.创建对象并且执行 asyncore.loop 进入运行循环 服务端示例代码 运行结果 注意: 介绍 asyncore库是python的一个标准库,提…

作为程序员,你离拿offer就差这个免费且好用的简历制作工具

为什么你的简历总是石沉大海?为什么你投递的岗位迟迟得不到回应?除了岗位招满、HR没看到以及竞争太激烈等客观因素外,最重要的是——“简历”出现了问题。 “简历”就像名片一样,在面试和求职的过程中,一份优质的简历…

数字孪生城市项目的关键技术展望

智慧城市是社会空间、物理空间和信息系统三元有机融合的条件下城市智慧化转型的新型态, 运用以数字孪生为代表的新一代信息化技术优化城市系统, 提升城市品质和综合竞争力, 从而实现可持续发展成为智慧城市构建的新趋势。 数字孪生城市项目的关键技术 北京智汇云舟科技有限公司…

chrome的几种存储storage模式

Storage生命周期存放数据大小与服务器通信localStore 除非被清除,否则永远保存 一般5MB 仅在客户端(即浏览器)中SessionStorage仅在当前会话下有效,关闭页面或者浏览器后被清除 一般5MB 保存,不参与和服务器的通信Cookies一般由服务器生成&a…

荣盛生物将再次上会:前三季度收入约2亿元,曾被暂缓审议

近日,上海证券交易所披露的信息显示,上海荣盛生物药业股份有限公司(下称“荣盛生物”)将于2022年12月26日接受科创板上市委员会的现场审议(即“上会”)。据贝多财经了解,荣盛生物曾于11月7月7日…

TCP滑动窗口、流量控制、拥塞控制

TCP滑动窗口、流量控制、拥塞控制一、滑动窗口二、流量控制三、拥塞控制一、滑动窗口 上篇博客我们介绍了TCP报文结构、确认应答机制、超时重传机制、连接管理机制。 TCP保证了可靠传输,但是失去了效率。那么怎么样尽可能提高传输效率呢??&a…

react笔记_07组件实例化对象的三大属性

目录前提状态(state)作用状态使用总结属性(props)展开运算符复习props-作为属性传入数据props-使用展开运算符展开对象props-进行数据类型限制propTypes语法校验规则举例说明defaultProps语法举例说明refs字符串形式的ref语法举例说明注意点回调形式的ref什么叫做回调&#xff…

RT-Thread 简介

1.RT-Thread 概述 RT-Thread,全称是Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统, 基本属性之一是支持多任务,允许多个任务同时运行并不意味着处理器在同一时刻真地执行了多个任务。 事实上&#xff…

Redis实战——签到统计(BitMap的用法)

1. 什么是BitMap 我们针对签到功能完全可以通过mysql来完成,比如说以下这张表 但是,用户一次签到,就是一条记录,假如有1000万用户,平均每人每年签到次数为10次,则这张表一年的数据量为 1亿条。 每签到一次…

js实现图片的放大缩小(鼠标长按拖拽、鼠标滚轮控制放大缩小)

系列文章目录 文章目录系列文章目录背景与效果图1.背景如下(功能图):2.效果图如下:拖拽后的效果缩放的效果放大的效果一、功能:支持鼠标长按拖拽1.鼠标事件:2.拖拽功能流程3.拖拽部分代码如下二、功能&…

HTTP报文详解

个人博客地址: http://xiaohe-blog.top/ 文章目录1. 请求1.1 请求行1.2 请求头1.3 空白行1.4 请求体2. 响应2.1 状态行2.2 响应头2.3 空白行2.4 响应体2.5 HTTP报文总结3. HTTP方法4. GET与POST的区别5. 状态码1. 请求 1.1 请求行 请求方式 请求地址 请求协议版本号…

指针进阶1 2

字符指针 int main() {char ch q;char* pa &ch;return 0; }不仅可以这样写还可以指向一个字符串 int main() {/*char ch q;char* pa &ch;*/char* ph "hello world";printf("%c\n", *ph);//打印遇到\0才会结束,没数据会打印随机值…

pybind11学习 | VS2022下安装配置

pybind11是一个只有头文件(header-only)的轻量级库,其主要目的是建立C的Python代码绑定,实现C和Python无缝连接。我学习这个工具的目的,是为了能够在Python中调用C代码实现一些计算密集型任务,同时培养自己…

Java后端核心技能知识点

今天带来的是2022全新升级的《Java岗面试核心版》,这个版本里面不仅仅包含了面试题,还有更多的技术难点、大厂算法、实战项目、简历模板等等,全册接近1700页!相比上一个版本的287页,升级了多少内容你懂的 大概内容&am…

南京邮电大学编译原理实验二(语法分析程序)

文章目录一、文法二、源代码模块(一)消除文法的左递归(二)求First集(三)求Follow集(四)构建LL(1)分析表(五)符号串分析(六)主函数三、…