C++入门之std(3)——虚析构
2023-04-21 12:16:26
愿意用最简单的方法有帮助努力学习者进入c++程序语言全世界。
前面的评论提到了虚变量和纯虚变量,这两种变量是借助c++下述的关键所在。以前说一下另外一个比较极其重要的知识点——虚析构变量。
在c++程序语言处理过程中的,极难遇到的问题是缓存泄露。什么是缓存泄露呢,最简单来说就是程序中的某块被平均分配的空间无法被及时释放,引发缓存浪费。比如,new 了一个单纯,在采用完以后无法delete,就引发了缓存泄露。当缓存泄露严重的时候亦会导致隔开缓存,从而使程序必须不该调试。而虚析构就是避免缓存泄露的一种手段。
随着采用c++的熟练程度增加,你不该认清一条规范,那就是:如果一个类是局部变量或者将来要作为局部变量采用,那么它的析构变量就不该是虚析构变量。
比如我上一篇评论中的举的例子:
示意图1 类的度量 示意图2 类的是采用在局部变量Parent中的析构变量,就度量成了虚析构变量,只有这样,在示意图2中的delete p 时才能加载一般来讲的析构变量。因为我么用的是Parent* p = new Child_A, 所以在delete p时只有加载到Child_A的析构变量,才能保证Child_A的缓存不该释放,从而避免缓存泄露。
接下来我将侧面的文档稍微修改一下来来作验证。
示意图3 局部变量中的虚析构如示意图3右示意图,在局部变量Parent中的度量了虚析构变量virtual ~Parent().类的采用文档还是如示意图2右示意图,调试结果如下示意图右示意图:
示意图4 虚析构调试结果从调试结果我们可以碰到,delete p后,先为加载一般来讲的析构变量再加载局部变量的析构变量,使得缓存不该释放。而如果局部变量中的的虚析构变量去掉virtual 关键字,则调试结果如下:
示意图5 非虚析构转换成结果我们可以碰到,当局部变量中的早已采用虚析构的时候,一般来讲的析构变量无法被加载,从而存有缓存泄露的可能亦会。
有的人可能亦会问,在不加载一般来讲析构变量的时候,为什么亦会存有缓存泄露的可能亦会呢?很最简单地只想一下,假如一般来讲的小团体变量中的new 出了一个常量p1,p1只在析构变量中的delete,如果在采用完一般来讲析构时不加载析构变量,p1就不亦会被释放从而引发缓存泄露。而只有当局部变量常量指向一般来讲时,才亦会浮现这种隐患从而必须在局部变量中的采用虚析构变量。那么我只想你无论是否理解,不该先为将这一规范记住以便采用。
以前先为到这里,愿意大家批评指正,相互努力学习,多提意见,顺便点个关注,谢谢。
孩子厌食不爱吃饭怎么办肠胃炎拉肚子吃什么药
再林阿莫西林克拉维酸钾片说明书
小孩感冒吃再林阿莫西林颗粒管用吗
颈椎痛怎么治疗最好
下一篇: 贵州遵义新增高风险区25个、中风险区8个
- 我对这段留日经历念念不忘——导演李亘谈《如果有一天我将会留在你》
- 快讯:德才股份常务董事刘彬辞职
- 泰林科所建(06193.HK)预计年度综合溢利约170万元
- 27岁许魏洲官宣结婚!曾和周雨彤当街热吻,老婆双重身份暂无人知
- 达美航空三季度营收91.54亿美元 净利润极限12亿美元
- 铜峰电子(600237.SH):2021年度营业额升542.99%至5085.52万元
- 【美股】美股三大指数股价涨跌不一,中概教育股普涨
- 《再见爱人》集体痛哭8集:三对恋人皆“执念深重”,好憋气
- 和更远气体(002971.SZ):长江资本拟减持不超1.8%的股份
- 新力金融(600318.SH):海螺水泥拟减持不超1%股权
- 少年候车厅炫技跳舞惊艳路人 网友:舞技纯熟 帅气十足
- 证券市场推出跨境发行 地方政府债券信息展示服务
- 天宇股份(300702.SZ):非布司他原料药通过CDE备案
- 万人说新疆|凯赛尔·艾比都拉:爱单行本的“大厨”
- 中兴基金姚余栋:北交所能更好促进”专精特新”企业发展
- 新力金融(600318):安徽新力金融持股有限公司股东减持持股计划
- 李宣美最新大面积释出 脚踩玫瑰花高跟鞋时尚满分
- 招商公路(001965):第二届监事会第十六次代表大会决议
- 完美世界股份有限公司 2021年前三季度营业额预告
- 许魏洲13点14晒结婚证宣布结婚, 妹妹身份未知