cocos2d-x 2.2.3 ccArray简单分析

本文主要分析了cocos2d-x中的ccArray,指出CCArray实际上是ccArray的封装,着重讨论了ccArray的内存管理和效率优化,如通过翻倍分配空间来提高性能。同时提及了ccCArray,它是引擎内部使用的C方式内存管理的数组。
摘要由CSDN通过智能技术生成

本来想分析CCArray的,结果发现实现部分基本都在ccArray里面,CCArray几乎只是将ccArray封装成了类,所以索性就直接分析ccArray了。

头文件

//- ccArray 实现里包含了retain和release操作
//- ccCArray 没有包含retain和release操作

typedef struct _ccArray {
	unsigned int num, max;
	CCObject** arr;
} ccArray;

// 分配指定大小的空间
ccArray* ccArrayNew(unsigned int capacity);

// 释放空间
void ccArrayFree(ccArray*& arr);

// 分配空间翻倍 一般不需要调用 只需调用ccArrayEnsureExtraCapacity即可
// 每次分配2倍空间的好处是:一次性分配空间 下次插入时 可更快的插入 免去空间分配的时间 思想有点像线程池
void ccArrayDoubleCapacity(ccArray *arr);

// 确保空间足够 如果不够 翻倍
void ccArrayEnsureExtraCapacity(ccArray *arr, unsigned int extra);

// 收缩 使空间与实际item数相同
void ccArrayShrink(ccArray *arr);

// 获取指定元素的索引
unsigned int ccArrayGetIndexOfObject(ccArray *arr, CCObject* object);

// 检查元素是否在array内
bool ccArrayContainsObject(ccArray *arr, CCObject* object);

// 在末尾添加元素 不检查空间是否足够 所以在空间不足时 会出现无法预测的行为
void ccArrayAppendObject(ccArray *arr, CCObject* object);

// 在末尾添加元素 空间不足时重新分配
vo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值