位置: 编程技术 - 正文
推荐整理分享cocos2dx 使用过程中内存管理的理解(cocos2dx 教程),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:cocos2dx运行原理,cocos2dx 教程,cocos2d怎么用,cocos2dx怎么用,cocos2dx用什么ide,cocos2dx用什么ide,cocos2dx4.0教程,cocos2dx官方教程,内容如对您有帮助,希望把文章链接给更多的朋友!
关于引擎内存管理的细节,网上有大量的详解,这里概括一下:
cocos2d-x 的世界是基于 CCObject 类构建的,所以内存管理的本质就是管理一个个 CCObject。
这里引入了自动释放池的概念,它的作用是:每一帧都检测池中对象的引用计数。为什么需要它?
>>使用create创建一个对象时候,我们可能并不立即使用,这时为了保证在使用之前不会被释放掉,就让它存活一帧,所以初始引用计数为1。
>>如果当前帧结束了,仍然没有使用,则在帧过渡时,自动释放池会遍历池中的对象,使其引用计数-1,释放掉对象,所以下一帧就不存在了。
由此可见,创建的对象如果没有使用,则会交由自动释放池自动释放掉,不需要担心。那如何才算使用了呢?
》任何导致引用计数增加(>1)的行为都算是使用了:
最后列几个需要注意的地方:
1>CCArray创建之后,需要retain,在使用该数组的类中析构函数中release它。
2>new出来的对象,即不采用cocos2dx内置的内存管理方式时,尤其要注意手动释放delete,因为它没有添加到自动释放池中,导致初始时的引用计数1没有释放。
3>new和create的一个重大区别:没有走父类的init()函数。有些父类(例Widget)在init()中做了一些初始工作,此时new出来的对象缺少这部分操作(有些成员没有初始化),在释放的时候会报错。这种情况主要发生在new一个CCNode及其子类对象的身上。
[置顶] [寒江孤叶丶的Cocos2d-x之旅_]在Cocos2d-x中集成protobuf (Protocol Buffers) 原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列]博客地址:
Cocos2dx技术(三)——cocos2dx基本概念(五)场景 一、什么是场景场景是包含精灵、标签、节点和其他游戏UI元素的对象容器。场景负责游戏逻辑的运行和游戏内容的逐帧渲染。每个游戏至少需要一个场
[常见错误 及 解决方案系列]USE " cc.exports.* = value " INSTEAD OF SET GLOBAL VARIABLE" 原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的常见错误及解决方案系列]博客地址:
标签: cocos2dx 教程
本文链接地址:https://www.jiuchutong.com/biancheng/368919.html 转载请保留说明!上一篇:2015-04-08---cocos2dx一个都不能死(含源码)
下一篇:[置顶] [寒江孤叶丶的Cocos2d-x之旅_29]在Cocos2d-x中集成protobuf (Protocol Buffers)
友情链接: 武汉网站建设