动态数组之二:分类

来源:互联网 发布:查看mysql使用的引擎 编辑:程序博客网 时间:2024/06/01 22:01

*CArrayX

 - CArrayFixFlat

 - CArrayFixSeg

 - CArrayVarSeg

*RArray

*RPointerArray

 

CArrayX命名方式

*Fix: 元素的长度相等,并且包含在数组缓冲区中

*Var: 元素的长度不同,每个元素包含在自己的堆单元中,数组缓冲区包含该元素的指针

*Pak: 表示打包数组,其中的元素长度不同,每个元素保存在数组缓冲区中,并且各自包含长度信息

*Ptr: 元素为CBase派生对象的指针

*Flat: 使用平坦缓冲区保存数据

*Seg: 使用分段缓冲区保存数据

 

*CArrayFixFlat

- 元素大小固定,包含在数组本身中

- 该数组在内存中占用单独的区域

- 元素由数组拥有,并且数组负责其销毁工作

*CArrayFixSeg

- 元素大小固定,包含在数组本身中

- 数组占用内存中的多个区域

- 元素由数组拥有,并且数组负责其销毁工作

*CArrayVarFLat

 - 元素大小可变

 - 每个元素分离存在于堆中

 - 数组由这些元素的指针组成

 - 数组占用内存中的单独区域

 - 元素由数组所有,并且由数组负责其销毁工作

*CArrayVarSeg

 - 元素大小可变

 - 每个元素分离存在于堆中

 - 数组由这些元素的指针组成

 - 数组占用内存中的多个分段区域

 - 元素由数组所有,并且由数组负责其销毁工作

*CArrayPtrFlat

 - 元素为CBase派生类的对象指针

 - 数组占用内在中的单独区域

 - 元素必须在数组删除之前调用ReasetAndDestroy()单独销毁

*CArrayPtrSeg

 - 元素为CBase派生类的对象的指针

 - 数组占用内存中的多个区域

- 元素必须在数组删除之前调用ReasetAndDestroy()单独销毁

*CArrayPakFlat

 - 元素大小可变,包含于数组之中

 - 每个元素的数据之前标有该元素的长度,这一点和描述符非常相似

 - 数组占用内存中的多个区域

 - 元素由数组拥有,并且数组负责其销毁工作

 

*RArray

 - 基于栈或者堆

 - 清理工作需要通过调用Close()Reset()函数来完成

*RPointerArray

 - 元素为指针

 - 每个元素指向的对象位于堆中

 - 如果这些对象由其它对象所有,清理内存时调用Close()Reset()即可、

 - 如果这些对象由数组本身所有,清理内存时则需要调用ResetAndDestroy()函数

原创粉丝点击