C++内存管理框架?

原创 2006年05月19日 09:58:00

具体也说不清为什么,一直对C++语言很着迷,即使现在很少使用。做应用系统,讲究的是RAD,不是用Java平台就是.Net平台。C++已经退居幕后,用来做那些高效的,安全的,或需要更强控制功能的程序,比如底层的引擎,硬件相关的或平台级的程序。就像很多已经消失的东西,有一天C++也会消失(我会伤心的)。 

C++在堆上分配的内存是由开发者自己控制的,对于复杂逻辑或者应用一些模式时,内存管理可能会变的很复杂。我们可以开发一个通用的C++内存管理框架,能自动或半自动的管理堆分配。力争实现,在内存管理方面,能以接近.NetJava的方式开发,而仍然是以本地二进制代码运行。当然,这必然会牺牲一些运行时的时间和空间效率,但如果能自动管理堆分配,这点牺牲是非常值得的,对于现在的大多数C++开发都是可以接受的。何况,我们可以实现,当开发者分配内存时可以选择使用普通的堆,还是使用受管理的堆(我们不应该丧失C++的灵活性)。这一点类似于.NetManaged C++,但不同的是我们要编译为本地二进制代码。这种想法,我是从Symbian操作系统的C++语言来的。如果可能,现在应该已经存在一些这样的C++框架了,但我没有搜索过。

Symbian操作系统中C++语言,其内存堆可以说实现了半托管。开发者在堆上建立了对象,然后可以选择将此信息推入到一个全局的管理器中。当对象不再使用时,开发者可以选择自己销毁对象,也可以调用全局管理器的清除函数。当程序结束或发生意外时,会自动清除管理器中受管理的对象。Java.Net平台对内存堆的管理其实也是这个基本原理,只是实现的更完全,能定期自动清除不再使用的对象。

这个框架的开发当然不会太容易。首先,要自己构建并维护一个内存堆结构,并需要设计一些结构和方法,来管理这个堆上的内存分配信息。并可以采用一些方法对堆的效率进行优化,比如使用堆指针,保持内存分配的连续性。在语言方面,可以由重载运算符,使用宏等方式来实现,甚至,可以写一个预处理器,先对代码增加一些特殊的预处理,比如参数传递,函数返回值等机制,然后对预处理器生成的代码再由C++编译器编译。这种处理也是一种比较普通的方法,有的C++编译器,其实就是一个预处理器加一个C编译器。但这样有将C++变成另外一种语言的嫌疑,呵呵。

C++ 内存管理算法和实现.chm.rar

  • 2017年11月27日 10:17
  • 5.47MB
  • 下载

c++内存管理

  • 2014年06月07日 16:20
  • 127KB
  • 下载

Linux内存管理基本框架

Linux内存管理基本框架 Linux内核的映射机制设计成三层:页面目录(PGD),中间目录(PMD),页面表(PT) 【其中页面表项简写为PTE】 1、三层地址映射示意图: 当地址位...

C++内存管理技术内幕

  • 2015年11月18日 22:01
  • 605KB
  • 下载

C++ 内存管理算法和实现.chm

  • 2007年04月09日 14:45
  • 5.47MB
  • 下载

Foundation框架-08 集合对象的内存管理

Foundation框架-08 集合对象的内存管理

C++ 内存管理算法和实现

  • 2007年07月08日 16:00
  • 5.47MB
  • 下载

C++内存管理算法和实现

  • 2007年04月18日 22:35
  • 5.47MB
  • 下载

《从零开始学Swift》学习笔记(Day 61)——Core Foundation框架之内存管理

原创文章,欢迎转载。转载请注明:关东升的博客 在Swift原生数据类型、Foundation框架数据类型和Core Foundation框架数据类型之间转换过程中,虽然是大部分是可以零开销桥接,零开销...

C++内存管理的思想和方法

  • 2012年05月31日 11:31
  • 406KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++内存管理框架?
举报原因:
原因补充:

(最多只允许输入30个字)