Cocos2d-x引擎的核心是用C++编写的,那对于所有使用该引擎的游戏开发人员来说,内存管理是一道绕不过去的坎。
关于Cocos2d-x内存管理,网上已经有了许多参考资料,有些资料写的颇为详实,因为在内存管理这块我不想多费笔墨,只是更多的将思路描述清楚。
一、对象内存引用计数
Cocos2d-x内存管理的基本原理就是对象内存引用计数,Cocos2d-x将内存引用计数的实现放在了顶层父类CCObject中,这里将涉及引用计数的CCObject的成员和方法摘录出来:
代码如下:
class CC_DLL CCObject : public CCCopying{public:… …protected:// count of referencesunsigned intm_uReference;// count of autoreleaseunsigned intm_uAutoReleaseCount;public:void release(void);void retain(void);CCObject* autorelease(void);… ….}
CCObject::CCObject(void): m_nLuaID(0), m_uReference(1) // when the object is created, the reference count of it is 1, m_uAutoReleaseCount(0){… …}
void CCObject::release(void){CCAssert(m_uReference > 0, "reference count should greater than 0");