- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
cocos2d-x 内存管理
你应该知道的cocos2d-x?内存管理?你的cocos2d-x里面指针用的多么?在指针乱飞的程序中你是否会感到不安了?不管你们有没有,反正我是有的。?cocos2d里面管理内存采用了引用计数的方式,咋眼一看以为是智能指针,但那确实是简单的采用了智能指针中的引用计数,具体的来说就是CCObject里面有个成员变量m_uReference(计数);??m_uReference的变化?对象初始化:m_uReference?= 1?retain:++m_uReference?release:--m_uReference,if(m_uReference == 0) delete 对象?addxxx:一般具有add语义代码会retain对象,比如说addChild?removexxx:一般具有remove语句的代码会release对象??CCPoolManager(以池的方式管理内存)?cocos2d-x采用了以池的方式管理内存,前提是给对象来了个autorelease的操作,这个时候对象有个属性m_bManaged?= true;他和我们手动的release有什么区别了?其实也就是调用时机不一样,CCPoolManager会在每帧动画结束后调用pop方法将池中的对象release掉??这里会怎样release了????在CCPoolManager的clear方法中首先会遍历所有池中元素,将m_bManaged?= false(注意这里),后将所有池中的所有对象release掉,当对象的 m_bManaged == false的时候,以前在池中的对象现在就不会再在池中,也就是说下次的一个帧的动画结束后,被先前CCPoolManager调用pop方法release的对象(如果还存在)就不会再被pop方法release了(CCPoolManager的最终作用就是将对象的引用计数减一而已,除此之外没有什么其他神奇的功能)??当父节点被析构时,其所有的子节点都会相应执行release,后将父节点重置为NULL???coco2d-x中很多用静态方法创建的对象都会自动由CCPoolManager来管理内存,举个例子???在我们的操作下,不是说由CCPoolManager管理的内存就是没有问题的,他和我们手动release就是一个调用时机的差别,而我们所要关注的是当前程序的运行环境和对象的m_uReference计数,不管怎样你都有权采用release或则retain的方式来改变对象的生命周期,这时你的自由!使用过 Cocos2d-x 都知道,其中有一套自己实现的内存管理机制,不同于一般 C++ 的编写常规,而在使用前,了解其原理是有必要的,网上已经有很多对内部实现详细解说的文章。而对于使用者而言,并不需要对其内部有很深的了解,注重其“机制”,而非内部实现,在这里只是简单的聊一聊它的管理方式以及使用,固为浅说。?无用对象 与 管理对象Cocos2d-x 将会在下一帧自动清理无用的对象,什么是无用的对象,通过 create() 方法创建的就是无用的对象。?为了简要说明,代码的组织设计一切从简,我们创建了两个辅助类和一个容器类 BaseLayer,在 BaseLayer 之上管理内部对象,并观察它是怎么自动管理对象的。实现了其 构造函数 方法和 析构函数,并做些日志打印,以方便我们观察:1.class?LSLayer:?public?CCNode?{ ?2.public: ?3.????virtual?bool?init()?{ ?4.CCLog(LSLayer().init()); ?5.return?true; ?6.????}; ?7.8.????CREATE_FUNC(LSLayer); ?9.10.LSLayer(){ ?11.CCLog(LSLayer().()); ?12.????}; ?13.????~LSLayer()?{ ?14.CCLog(LSLayer().~()); ?15.????}; ?16.}; ?17.18.class?LSSprite:?public?CCNode?{ ?19.public: ?20.????virtual?bool?init()?{ ?21.CCLog(LSSprite().init()); ?22.return?true; ?23.????}; ?24.25.????CREATE_FUNC(LSSprite); ?26.27.LSSprite(){ ?28.CCLog(LSSprite().()); ?29.????}; ?30.????~LSSprite()?{ ?31.CCLog(LSSprite().~()); ?32.????}; ?33.}; ?34.35.class?BaseLayer:
您可能关注的文档
最近下载
- 新纲要云南省实验教材小学三年级信息技术第一册教学计划汇编.pdf VIP
- 施罗德管道爬行机器人D100中文文版说明书.pdf VIP
- SHT3007-2014 石油化工储运系统罐区设计规范.pdf VIP
- 浅谈经编涤纶超柔短毛绒生产工艺.pdf VIP
- 教科版物理八年级上册第四章 在光的世界里 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx VIP
- 感染性手术管理规范.pdf VIP
- 多摩川编码器说明书多摩川编码器说明书.pdf VIP
- 《运动生理学》第10章有氧、无氧工作能力1.ppt
- 《网络营销(第2版)》课件项目四 网上渠道:网站和网店营销.pptx VIP
- (1.2.5)--7.5-应急放油系统.ppt VIP
文档评论(0)