当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

C++内存管理改革(2):最袖珍的垃圾回收器[VC/C++编程]

赞助商链接



  本文“C++内存管理改革(2):最袖珍的垃圾回收器[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

概述

C/C++最被人诟病的,大概是没有一个内存垃圾回收器(切当是说没有一个尺度的垃圾回收器).本文谈论的内容要点是,在C/C++中实现一个最袖珍的、功效受限的垃圾回收器.这个垃圾回收器辨别于其他垃圾回收器的主要特点是:

1. 袖珍但具实用性.整个垃圾回收器代码行数100行左右(不含空白行),相当玲珑.相对而言,它的功效也遭到一定的限制.但是它在很多关键的场所恰好非常有效.该垃圾回收器以实用作为主要目标,已经成为我和身边一些同事编程的重要工具.

2. 高性能.辨别于其他垃圾回收器的是这个袖珍的垃圾回收器不但不会招致性能的下降,反而提高了程序的时间性能(分配的速度加快)和空间性能(所占内存空间比正常的malloc/new少).而这也是实用的重要指标.

本文算法并不复杂.技术上的东西,很多点明了就没有什么了,大概重要的意义是在于其创始性.其实,boost[1]供应的pool组件也在试图供应近似功效的自动内存回收本领.但是实现相对复杂且低效(基于经典的mempool技术[2]).

目前,你大概急着想看看,这个垃圾回收器长什么样了.闲话少叙,那就让我们就开始一步步把答案揭开吧.

思绪

理解该垃圾回收器的关键点在于,是在于理解它的目标:为一个复杂的部分历程(算法)供应自动内存回收的本领.

所谓部分历程(算法),是指那些算法复杂性较高,但在程序运行期所占的时间又对比短暂的历程[3].比方:搜索引擎的搜索历程、读盘/存盘历程、显示(绘制)历程等等.普通这些历程大概需求申请很多内存,并且内存分配操作的进口点很多(就是调用new的地方很多),假如每调用一次new就要考虑应当在什么地方delete就徒然浪费我们贵重的脑力,使得我们无法把尽力精神集合在算法本身的计划上.大概就是在这种情形下,C/C++程序员分外羡慕那些具有垃圾回收器的语言.相对而言,假如算法复杂性不高的话,我们的程序员完好有本领掌握好new/delete的匹配关系.并且,这种“一切皆在我掌控之中”的感受给了我们安全感[4]和满意感.

因此,这个垃圾回收器的重心并非要供应一个理论上功效完备的内存自动回收机制.它只是针对复杂性较高的部分历程(算法),为他们供应最实效的内存管理手段.从部分历程的一开始,你就只管去申请、利用内存,等到整个算法完成之后,这个历程申请的大部份内存(需求作为算法后果保存的例外),无论它是在算法的那个步骤申请的,均在这个完毕点上由垃圾回收器自动销毁.我们画个表示图:

图 1


  以上是“C++内存管理改革(2):最袖珍的垃圾回收器[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>java的static内部类</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .