c++ file* 句柄泄漏_C++核心指南:P.8 勿泄漏任务资源

b145a4f24dc6c362200b72f935a09ed9.png

P.8: 勿泄漏任务资源

原因

随着时间的推移,即使是资源的缓慢增长也会耗尽这些资源的可用性,这对于长时间运行的程序特别重要,但也是负责任的编程行为的基本部分。

糟糕的例子

void f(char* name){ FILE* input = fopen(name, "r"); // ... if (something) return; // 糟糕:如果 something == true,文件句柄就泄漏了 // ... fclose(input);}

优先使用RAII:

void f(char* name){ ifstream input {name}; // ... if (something) return; // OK: 没有泄漏 // ...}

参考: 资源管理部分

注意

泄漏通俗地说就是“任何没有被清理的东西”,更重要的分类是“任何不能再被清理的东西”。例如,在堆上分配了一个对象,然而丢失了指向该块内存(分配)的指针。 不应将此规则应用在程序关闭期间需返回长生命周期对象的分配(译注:在程序退出期间的内存分配可以不需要遵守这些规则),例如,依赖于系统保证的清理可以简化代码,比如关闭文件和在进程关闭时释放内存。然而,依赖于隐式清理的抽象也同样简单,而且通常更安全。

注意

使用生命周期安全性剖面(profile) 来消除泄漏,当与RAII提供的资源安全相结合时,就没了"垃圾回收"的需求。当使用类型和边界剖面(profiles)时,你可以获得由工具保证的类型和资源安全。

实施

  • 查看指针:将它们分为非所有者(默认)和所有者(owner),在可行的地方,用标准库资源句柄替换所有者(如上面的示例所示),或者使用GSL中的owner来标记所有者。
  • 查看裸用的new和delete
  • 查看已知返回原始指针的资源分配函数(如fopen, malloc 和 strdup)

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

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

相关文章

数据规范化、实体-联系图、状态转换图、层次方框图、Warnier图、IPO图及验证软件需求

数据规范化 软件系统经常使用各种长期保存的信息,这些信息通常以一定方式组织并存储在数据库或文件中,为减少数据冗余,避免出现插入异常或删除异常,简化修改数据的过程,通常需要把数据结构规范化。 通常用“范式(normal forms)”…

Linux基础(iptables与firewalld防火墙)

iptables 在早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙。尽管新型的fierwalld防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用iptables。 策略与规则链 防火墙会从上至下的顺序来读…

虚拟跳线软件干什么用的_疯狂刷单!用违法软件生成虚拟手机号,“骑手”半年“刷单”牟利60余万,百米内竟有万笔订单 | 申晨间...

来源:新闻晨报 记者:吴艺璇借助违法软件生成虚拟手机号码,利用平台审核漏洞大量注册用户,大量“刷单”骗取平台的返现和购物补贴,半年内疯狂刷1.8万余单,累计牟利60余万元。近日,在市公安局刑侦…

ygo游戏王卡组_ACG大科普(7)游戏王

大家是否在小时候接触过一种卡片类似这种的 这就是今天的主角游戏王。 背景 1996年,《游戏王》漫画开始在集英社《周刊少年Jump》连载。 1998年,Bandai推出以《游戏王》原作中登场的集换卡牌游戏“M&W”为题材的集换卡牌。 采用Bandai的卡片自动贩卖…

Qt图形界面编程入门(基本窗口及控件)

基本窗口类QWidget QWidget是所有窗体部件的基类,例如对话框类,主窗体类,以及其他诸如按钮,编辑框,标签等等都是由QWidget派生得到,QWidget拥有的方法往往都可以在其他子类中使用。 窗体的几何尺寸分为包…

背景se_盘点那些RPG手游中主角的背景故事,越悲情越强大

RPG游戏一直以代入感超强的游戏方式来吸引玩家,用超越现实的艺术手段把玩家带入到虚拟的游戏世界,让玩家担任不同的社会角色来去经历不同的虚拟故事,体验多种人生经历,想要扮演任何角色都是有可能的。当然在RPG游戏中也有好坏之分…

TensorFlow构建二维数据拟合模型(2)

变量的定义和使用 变量的定义与初始化 TensorFlow中,变量是一种特殊的张量,其值可以是一个任意类型的形状的张量。 与其他张量不同,变量存在于单个回话调用的上下文之外,主要作用是保存和更新模型中的参数。 声明变量通常使用…

c++用牛顿法开多次根_望远镜的历史之三:大神出世,改变望远镜历史的竟然是牛顿...

上次我们说到格里高利望远镜有点画蛇添足,那么格里高利望远镜添了什么呢?格里高利望远镜格里高利望远镜观测的图像都是正立的,这就意味着要采用多个凹面反射镜,而当时凹面反射镜磨制不易,无论是多大的科学家都要亲自动…

如何把照片正面变成反面_各国签证照片要求大全 (含模板)

对于不是很熟悉签证的小伙伴来说,面对全球那么多国家的签证而且每张签证照片的规格不同为此我们为您整理了各国签证照片要求大全 东南亚国家的签证照要求基本相同,就以泰国为例,告诉大家签证照的注意事项。“泰国,新加坡&#xff…

TensorFlow实验(3)

模型的保存与恢复 我们来简单实现一下模型的保存与恢复 训练完TensorFlow模型后,可将其保存为文件,以便于预测新数据时直接加载使用。 TensorFlow模型主要包含网络的设计或者图以及已经训练好的网络参数的值。 TensorFlow提供的tf.train.Saver()函数…

ad域 禁用账号_IST-AD域信息同步平台来袭

IST的AD域信息同步系统是能帮助域管理员简化日常的一些管理工作,可以让AD域系统与其他的业务系统进行用户信息同步,实现自动的新旧用户帐户信息的同步修改、组织架构同步调整,并有简单易操作的配置页面系统与操作日志查询等。通过ODBC、Web S…

Linux基础(firewalld防火墙配置管理工具的图形用户界面)

firewall-config的界面如图所示 我们先将当前区域中请求http服务的流量设置为允许,但仅限当前生效。具体配置如图 尝试添加一条防火墙策略规则,使其放行访问8080-8088端口(TCP协议)的流量,并将其设置为永久生效&#x…

Linux基础(使用ssh服务管理远程主机1)

配置网络参数 使用nmtui命令配置网络参数,以及通过nmcli命令查看网络信息并管理网络会话服务。 执行nmtui命令运行网络配置工具 进入主界面 选中编辑连接并按下回车键 选中要编辑的网卡名称,然后按下Edit(编辑)按钮 把网络IPv4 …

联想g510升级方案_联想智慧中国行,聚焦第一古城,助力企业智能升级

12月29日,联想智慧中国行“一起联想 生态绽放”One Lenovo融合品鉴会邢台站盛大启幕,现场近70位河北合作伙伴到场参会,共同探讨智能时代带来的多重挑战和迎战机遇。“联想智慧中国行”是联想致力于推动中国行业智能化升级举办的系列活动&…

软件工程(总体设计②设计原理)

设计原理 模块化 模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。 按照模块的定义,过程、函数、子程序和宏,都可作为模块。 面向对象方法学中的对象是模块,对象内的方法也是模块。模块是构成程序的基…

TensorFlow构建二维数据拟合模型(3)

占位符与数据喂入机制 placeholder是TensorFlow提供的占位符节点,由tf.placeholder()函数创建,其实质上也是一种变量。占位符没有初始值,只会分配必要的内存,其值由会话中用户调用的run()函数传递。 占位符声明的方法如表 函数…

合作开发过程产生的专利_被起诉专利侵权怎么办?专利律师给你出招!

随着国内企业专利申请量的增加及专利保护意识的逐步提升,专利侵权诉讼作为常用的商业竞争手段和策略,其数量也随之呈逐年递增之势。考虑到目前国内专利数量较多,且很多专利技术互有交叉,因此在进行产品研发时即使未借鉴他人产品&a…

idea怎么设置代码提示不区分大小写_IntelliJ IDEA 这样设置动图,棒极了!

转自:IntelliJ-IDEA-Tutorial/Judas.n链接:http://suo.im/6sHdelIntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也因为这些人性化的设置让我们这些 IntelliJ IDEA 死忠粉更加死心塌地使用它和分享它。推荐设置IntelliJ IDEA 的代码…

表字段顺序有何影响_「品味保定」炸烹虾段乾隆赞 百年保定柔雅香

【引文】上溯先贤尧帝,保定传承已逾千载。燕赵之地、畿辅之疆、北控三关、南通九省、翅卫京师说的就是古城保定。千百年来,古城保定形成了独具特色的饮食文化,精致气派的直隶官府菜就是这种文化的结晶。品百年保定酒,尝直隶官府菜…

testufo测试刷新率测试_上手体验微星电竞显示器PAG301CR:200Hz高刷新率只是它的小亮点...

电子竞技行业高速发展,逐渐成为体育产业版图中重要的一块,产业链也在不断完善,人们对于电子竞技的认识也是越来越深刻,同时越来越多的人加入了电子竞技行列中,但是电竞游戏除了水平外,设备同样也尤其重要,特…