Effective C++读书笔记3(资源管理)

DC-DC占空比卡死真相:自举电路与同步整流的物理极限 DC-DC降压电路中的占空比并非理想公式D=Vout/Vin所能决定,其实际上限受制于自举电路充放电能力、同步整流死区时间、高端驱动器灌拉电流强度及MOSFET体二极管特性等物理因素。尤其在低压差(Vin/Vout≈1.05~1.5)工况下,自举电容ESR、二极管正向压降Vf、驱动RC时间常数共同构成硬性瓶颈,导致实测占空比普遍止步于92%~96%,远低于手册标称的‘100%’。该现象广泛影响电池供电设备、宽输入电源、便携式医疗电子等对效率与稳压精度敏感的应用场景。本文聚焦真实硬件调试中反复出现的占空比失效 阅读详情
◆条款13  以对象管理资源
以对象管理资源,可以在释放对象时经由析构函数来释放该对象所占用的资源,经此来防止内存泄漏。根据这原则,获得资源后立刻放进管理对象。⇒RAII("Resource Acquisition IS Initialization.")
可以用智能指针来防止忘记delete,但STD的auto_ptr的复制行为很奇怪,复制的源会被置为NULL,BOOST的shared_ptr则没有这个问题。

◆条款14  在资源管理类中小心coping行为
有些在资源管理类中被管理的资源在拷贝(拷贝构造函数,拷贝赋值函数)后可能呈现出意想不到的结果,比如管理一个锁,拷贝时就又加了一次锁,所以需要小心考虑两个拷贝函数的实现。可以通过禁止拷贝或者对资源使用进行计数来管理此类资源。

◆条款15  在资源管理类中提供对原始资源的访问
经常需要直接访问一个资源管理类管理的原始资源,可以通过提供一个get方法,或者经由隐式类型转换来实现,一般来说前者较安全。

◆条款16  成对使用new和delete要采取相同形式
new出来的数组delete时要用delete [ ],所以最好尽量不要对数组形式做typedef动作,因为很可能忘记它的数组属性。

◆条款17  以独立语句将newed对象置入智能指针
智能指针的初始化必须放在单独语句中执行,尤其不能放在函数参数里作为参数来初始化,因为有可能别的参数异常导致该指针无法释放。

这五个条款中心思想是将资源纳入类的管理范围内来,以此来管理资源的初始化和释放过程,其中析构函数扮演了很重要的角色,因为析构函数永远都会被最后调用的。智能指针也可以管理这些资源,但是效率会差一点,看如何平衡了,从项目经验上来看,制定一套不依赖编译器的编程法则或许也是不错的方式,看起来很高明的设计往往会很难看懂,太依赖于程序员的能力。而编程法则能很简单的由Review时同事指出问题。

★大的项目里可以定制一整套内存使用法则,建立能控制heap内存的管理类,其实就是定制new和delete。

《Effective C++》 读书笔记(详细总结55条款)上篇 下面从四个方面来说 (1) C++ 以 C 为基础,很多语句语法都没有改变,只是进行了扩展,C++ 解决问题的时候,可以理解为 C 的高效解法 (2) 面向对象,有构造函数,析构函数,继承、封装、多态、虚函数动态绑定,这是不同于C 语言的部分 (3) 泛型编程、可以理解为代码的模型,但是代码本身并不占用内存空间,只有在实例化的时候,才分配内存,所以可以提高代码复用性 阅读详情

相关推荐

数控机床进给传动设计:滚珠丝杠选型、惯量匹配与精度控制要点

数控机床的传动与进给机构是决定整机性能的核心子系统之一,其设计质量直接影响定位精度、动态响应与加工稳定性。在工程实践中,滚珠丝杠的导程与预压选择、伺服电机的惯量匹配、联轴器刚度校核以及反向间隙控制,都是进给系统设计的关键环节。理解负载惯量折算、临界转速校核与热伸长补偿等基本原理,有助于从源头规避低速爬行、高速共振和精度漂移等常见问题。无论是面向精密加工中心还是通用数控设备,掌握这些传动链的设计与调试思路,都能为后续的机电联调与精度优化提供坚实支撑。本文结合项目经验,系统梳理了进给机构设计中从需求拆解、部件选

weixin_34354945的博客 404

Effective C++读书笔记(3)——资源管理

资源的概念是一旦使用了该资源,将来就必须还给系统,不然就会产生不确定的行为。 C++中最常使用的资源就是动态分配内存,但还有其他的资源比如文件描述器、互斥锁、图形界面的字型和笔刷、数据库连接以及网络socket。 以对象管理资源 以对象管理资源的话,主要是有两种关键的想法: 获得资源之后立刻放进管理对象(RAII机制) 管理对象运用析构函数来确保资源被释放—在析构函数中的资源释放可能会抛出异常,需...

qq_41701244的博客 197

当vCenter的证书过期、Root密码过期、Root密码遗忘同时发生时的解决方法与步骤

vCenter,强制修改root密码,修改SSO User密码,修复证书过期问题

OCTSJimmy的专栏 5553

《Effective C++》读书笔记 3.资源管理

资源管理 条款13:以对象管理资源 把资源放进对象内,我们便可倚赖C++的析构函数自动调用机制确保资源被释放 现考虑有个f函数 void f() { Investment* pInv=createInvestment(); ... delete pInv; } 这看起来妥当,但若干情况下f可能无法删除它取得自createInvestment的投资对象-------或许是因为“…”区域内的一个过早的return语句。就算谨慎编写程序防止这类错误也无法保证后来的维护者能做到有效的资源管理。 RAII:R

Estrike的博客 190

如何在NVIDIA CX6 网卡和华为CE交换机上为RDMA协议使能DCQCN和PFC

【代码】如何在NVIDIA CX6 网卡和华为CE交换机上使能DCQCN和PFC。

Markchen7788的博客 5096

Synopsys 逻辑综合之 ICG

文章摘要: ICG(集成时钟门控单元)是一种用于降低时钟功耗的专用逻辑单元,通过控制时钟信号的传播实现节能。其核心原理是在寄存器前插入门控逻辑(如gclk=clk&en),但需避免直接使用AND门以防止毛刺,转而采用带锁存器的专用ICG单元。在RTL设计中,符合条件(如稳定使能信号)的if(en)结构可被综合工具(如DesignCompiler)自动识别并替换为ICG。使用时需配置时序检查(如PrimeTime分析使能路径、门控时钟延迟),并注意避免组合逻辑使能、多级门控等误区。ICG是芯片低功耗设

Serven的博客 4354

《Effective c++》读书笔记 3.资源管理

资源:动态分配内存,互斥锁,数据库连接等 原则:不再使用资源时,必须还给系统 13.以对象管理资源

ziggy7的博客 168

CocosCreator3.8实战指南:动态字体与位图字体性能优化技巧

本文深入解析CocosCreator3.8中系统字体、动态字体(TTF)与位图字体(FNT)的核心差异与性能表现。针对动态字体运行时解析开销大、内存占用高的痛点,提供了字体子集化、共享资源等优化技巧;同时详细介绍了位图字体制作流程及其在渲染速度、内存可控性上的绝对优势,并给出跨平台场景下的字体选型与优化策略,帮助开发者有效提升游戏性能。

weixin_29006701的博客 563

Effective C++ 读书笔记(3.资源管理)

条款13:以对象管理资源 假设我们使用一个类来表示投资行为,各式各样的投资类型继承自一个root class Investment: class Investment{...}; 通过一个工厂函数供应我们的Investment对象: Inverstment* CreateInvestment(); 调用createInvestment的对象后,有责任删除之。用一个f函数: void f() { Inverstment * pInv=CreateInvestment(); ... delete p

weixin_42699130的博客 175

混合部署 操作系统混合部署

在openEuler Embedded 22.03中,已经集成了OpenAMP相关支持,并与openEuler的SIG Zephyr合作实现了openEuler Embedded与实时操作系统Zephyr在QEMU平台上的混合部署。具体的混合部署方式取决于设备的硬件和软件支持。例如,可以使用虚拟机软件(如VirtualBox)在Linux操作系统上运行Android虚拟机,从而实现Linux和Android的混合部署。需要注意的是,混合部署涉及到设备的硬件和软件兼容性,以及操作系统的配置和管理。

dianqicyuyan的博客 1767

Ubuntu技巧-Ubuntu远程访问之SSH反向代理

💡大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、互联网和自媒体。要把内网的一台的Ubuntu服务器让外面也能访问,总共有三种可行的方案,前面已经介绍了两种方式,今天就来介绍更健壮稳定的方式——ssh反向代理。大概的框架图如下,今天就从服务器购买到设置,手把手的教程,让你花费100块以内,就拥有一个强大的「云服务器」。

可夫小子的频道 1153

【读书笔记】Effective C++—3 资源管理(之3)

Effective C++读书笔记 --By Nathan.Yu 2007-11-29-- 3 资源管理(之三) 条款15:在资源管理类中提供对原始资源的访问(Provide access to raw resources in resource-managing classes) 许多APIs需要指涉指针。   将RAII class对象转换为原始资源的方法: 1、  显式转换:

@塘外人 703

23 RAG 为什么答不准:召回、分块、排序的常见坑

RAG 答不准时,不要先怪模型。本文把常见失败拆成召回不到、召回不准、分块不完整、排序靠后、上下文污染和生成不忠实六类,并给出从 Top-K 检查到评估集的排查流程。

老于的笔记的专栏 248

【effective c++读书笔记】【第3章】资源管理

条款13:以对象管理资源 1、例子: #include using namespace std; class Test{ public: Test(){ cout << "Test构造" << endl; } ~Test(){ cout << "Test析构" << endl; } }; Test* createTest(){ return new Test(); } void f()

ruan875417的专栏 488

解决此平台不支持虚拟化的 Intel VT-x/EPT故障问题

当我们在VMware Workstation虚拟机上【启用】虚拟系统(如:Windows10)所在的虚【拟机设置】【处理器】【虚拟化引擎】下面的【虚拟化 Intel VT-x/EPT 或AMD-V/RVI(V)】内容后,在启动虚拟系统时,虚拟系统无法启动,且弹出【此平台不支持虚拟化的 Intel VT-x/EPT。不使用虚拟化的 Intel VT-x/EPT,是否继续】窗口

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【读书笔记】Effective C++—3 资源管理(之1)

Effective C++读书笔记 --By Nathan.Yu 2007-11-27-- 3 资源管理(之一) 常见的资源:文件描述器(file descriptors)、互斥锁(mutex locks)、图形界面中的字型和笔刷、数据库连接、网络sockets。   不论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统。 条款13:以对象管理资源(Use objects

@塘外人 766

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【读书笔记】Effective C++—3 资源管理(之4)

Effective C++读书笔记 --By Nathan.Yu 2007-12-08-- 3 资源管理(之四) 条款16:成对使用new和delete时要采取相同形式(Use the same form in corresponding uses of new and delete) 使用new时发生的事情: 1、  内存被分配(通过operator new函数) 2、  针

@塘外人 679

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【读书笔记】Effective C++—3 资源管理(之2)

Effective C++读书笔记 --By Nathan.Yu 2007-11-28-- 3 资源管理(之二) 条款14:在资源管理类中小心copying行为(Think carefully about copying behavior in resource-managing classes)  “当一个RAII对象被复制时,会发生什么?”这是每个RAII class作者必须面

@塘外人 751

《Effective C++》第3章 资源管理(1)-读书笔记

章节回顾: 《Effective C++》第1章 让自己习惯C++-读书笔记 《Effective C++》第2章 构造/析构/赋值运算(1)-读书笔记 《Effective C++》第2章 构造/析构/赋值运算(2)-读书笔记 《Effective C++》第3章 资源管理(1)-读书笔记 《Effective C++》第3章 资源管理(2)-读书笔记 《Effective C++》...

weixin_33918114的博客 77

《Effective C++》第3章 资源管理(2)-读书笔记

章节回顾: 《Effective C++》第1章 让自己习惯C++-读书笔记 《Effective C++》第2章 构造/析构/赋值运算(1)-读书笔记 《Effective C++》第2章 构造/析构/赋值运算(2)-读书笔记 《Effective C++》第3章 资源管理(1)-读书笔记 《Effective C++》第3章 资源管理(2)-读书笔记 《Effective C++》...

weixin_33696106的博客 108

Effective C++读书笔记

 记得前段时间又一次拿起《Effective C++》的时候,有种豁然开朗的感觉,所以翻出了我第一遍读时做的笔记。只做参考以及查阅之用。如有需要请参阅《Effective C++》书本。 by shenzi/2010.5.17一.让自己习惯C++   条款01:视C++为一个语言联邦    为了更好的理解C++,我们将C++分解为四个主要次语言:C。说到底C++仍是以C

shenzi的天空 2万+
上一篇: 如何实现一个支持共享内存的Map或Set
mentalmap
博客等级 码龄22年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值