cocos2dx内存管理
发布时间:2020-12-14 19:10:27 所属栏目:百科 来源:网络整理
导读:原文地址:http://www.cnblogs.com/yu-chao/p/3697459.html 今天想探索一下cocos2dx的内存管理,我们就先从CCObject开始吧 class CC_DLL CCObject : public CCCopying{ public : // object id,CCScriptSupport need public m_uID unsigned int m_uID; Lua re
原文地址:http://www.cnblogs.com/yu-chao/p/3697459.html 今天想探索一下cocos2dx的内存管理,我们就先从CCObject开始吧 class CC_DLL CCObject : public CCCopying { public: // object id,CCScriptSupport need public m_uID unsigned int m_uID; Lua reference id int m_nLuaID; protected: count of references unsigned int m_uReference; count of autorelease unsigned int m_uAutoReleaseCount; public: CCObject(void); virtual ~CCObject(void); void release(void retain(void); CCObject* autorelease(void); CCObject* copy(bool isSingleReference(void); unsigned int retainCount(virtual bool isEqual(const CCObject* pObject); void update(float dt) {CC_UNUSED_PARAM(dt);}; friend class CCAutoreleasePool; unsigned int getAutoReleaseCount(); }; 以上是CCObject的定义,可以看出CCObject主要有两个保护成员:m_uReference和m_uAutoReleaseCount,这个两个成员到底有什么用呢?让我们一探究竟,首先我们来看一下CCObject的构造函数: CCObject::CCObject(void) : m_nLuaID(0),m_uReference(1) when the object is created,the reference count of it is 1,m_uAutoReleaseCount(0) { static unsigned int uObjectCount = 0; m_uID = ++uObjectCount; } |