学习笔记Cocos2d-x之内存管理
内存管理 内存管理的核心是动态分配的对象必须保证在使用完毕后有效的释放内存,即管理对象的生命周期。 Cocos2d-x的内存管理机制 Cocos2d-x很巧妙地运用了前面的引用计数机制与自动回收的内存管理机制。为了实现对象的引用计数记录,Cocos2d-x实现了自己的根类CCObject,引擎中的所有类都派生自CCObject. 如: class CC_DLL CCObject : public CCCopying 每个对象包含一个用来控制生命周期的引用计数器,它就是CCObject的成员变量m_u-Reference。我们可以通过retainCount()方法获得对象当前的引用计数值。在对象通过构造函数创建时候,该引用值被赋为1,表示对象由创建者所引用。在其他地方需要引用对象时,我们会调用retain()方法,令其引用计数增1,表示获取该对象的引用权;在引用结束的时候调用release()方法,令其引用计数值减1,表示释放该对象的引用权。 autorelease(),其作用是将对象放入自动回收池(CCAutore- leasePool)。当回收池自身被释放的时候,它就会对池中的所有对象执行一次release()方法,实现灵活的垃圾回收。回收池可以手动创建和释放。除此之外,引擎在每次游戏循环开始之前也会创建一个回收池,在循环结束后释放回收池。因此,即使我们没有手工创建和释放回收池,每一帧结束的时候,自动回收池中的对象也都会被执行一次release()方法。 调试:在vs2013中的debug状况下使用F5调试 Sprite *fish = new Sprite(); 输出结果是:
创建回收池: 回收池管理器CCPoolManager的push()或pop()方法可用来创建或释放回收池。其中CCPoolManager也是一个单例对象。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |