位置: 编程技术 - 正文

cocos2d 内存管理(cocos2dx内存管理)

编辑:rootadmin

推荐整理分享cocos2d 内存管理(cocos2dx内存管理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cocos2d 内存管理机制,cocos creator内存管理,cocos creator内存管理,cocos 内存优化,cocos2dx内存管理,cocos2d 内存管理机制,cocos2d内存优化,cocos2d 内存管理机制,内容如对您有帮助,希望把文章链接给更多的朋友!

-- 不要怕,勇敢的迈出第一步,加油!!!!!--

此章介绍cocos2d 中的内存管理

1. cocos2d 中的所有Node类都继承于Ref,Ref中有引用计数的概念,如下:

class TestRef : public Ref {

public:

TestRef() {}

virtual ~TestRef() {}

};

new TestRef -- 这时class Ref 中的_referenceCount = 1

retain -- _referenceCount&#;&#;

release -- _referenceCount--, 如果_referenceCount == 0, 析构这个class

autoRelease -- 把this 放入PoolManager 内存池中. 当PoolManager回收时,就会把这个class回收到,并且析构。

例子1

auto p = new TestRef(); _referenceCount = 1

p->retain(); _referenceCount = 2

p->release(); _referenceCount = 1

p->release(); _referenceCount = 0, 析构p

例子2

auto p = new TestRef(); _referenceCount = 1

p->autoRelease(); 当PoolManager回收时,就会把这个class回收到,并且析构。

这个就是cocos2d 中的内存管理。

cocos2d 内存管理(cocos2dx内存管理)

如果我们在使用一些sprite,layer,scene时,在addChild的前后,如果不是特殊需要,不要调用其retain或者release,因为在创建后,这个组件都调用了autoRelease,并在其父节点释放后,其子节点都会释放的。

2. 不要在组件的继承类中保存如何的非Node类的成员变量,什么意思呢?如下,这里只是简单的描述一下哈,

class TestLayer : public layer {

public:

virtual ~TestLayer() {

t->release();

}

CREATE_FUNC(Fight);

private:

TestRef *t;

};

bool TestLayer::init() {

if (!Layer::init())

return false;

t = new TestRef();

return true;

}

把当前的TestLayer加入Scene中,然后程序退出,Scene和TestLayer都会被析构掉。在TestLayer的析构中,我们要把TestRef也析构掉,但是在TestLayer的析构函数断点中,我看到 t 是一个无效的指针,并且TestRef的析构函数没有被调用过,“内存泄露”了,怀疑如下:仅供个人参考,如果有人知道具体答案,请告知,谢谢~~~~

在TestLayer析构之前,其内部的所有子组件都会被析构掉,并且其所有成员变量都被重置成野指针,这是什么原因,我还没有搞清楚,内存泄露,程序退出时就会挂掉,大家可以根据这个,判断其是否内存泄露,什么地方内存泄露,还是很有用的。

结论:

1. cocos2d 的内存管理有效的解决某些童鞋忘掉释放内存的习惯,当然这个习惯不好哈。

2. 不能在组件的继承类中保存任何成员变量的对象,谨记。

TexturePacker命令行使用 spanstyle=background-color:rgb(,,);color:rgb(,,);font-family:Arial,Helvetica,sans-serif;font-size:px;/spanprename=codeclass=plainspanstyle=background-color:rgb(,,);font-fam

《Cocos2d学习之路》一,前序和闹钟 转载请说明出处:

Cocos2d : 模拟IOS时间选择器(循环) 使用引擎:cocos2d-js3.0使用语言:javascript运行平台:手机web---------------------------------------------------------------初步分析:操作过程:滑动,转动,放缓速度

标签: cocos2dx内存管理

本文链接地址:https://www.jiuchutong.com/biancheng/369136.html 转载请保留说明!

上一篇:cocos2d setTextureRect用法

下一篇:TexturePacker命令行使用(texturepackergui)

  • 没有固定金额的合同叫什么合同
  • 已收保证金
  • 年数总和法怎么做
  • 个税网络申报
  • 申报增值税无附表怎么填写
  • 住宿费电子发票样式
  • 科目余额转到其他科目
  • 出口退税收到退税款会计分录
  • 税控盘怎么注销需要带什么东西
  • 核定征收企业如何纳税
  • 供暖的配套费是不是开口费
  • 财产租赁个人所得税
  • 个体户季度报税表怎么填
  • 月度资金计划明细表模板
  • 个人代持股票的交易流程
  • 免税的投资收益需要调整利润表吗
  • 物业费增值税是什么税
  • 营改增后部分经济行为定性上的变化和影响有什么?
  • 税盘减免会计分录
  • 汇算清缴的年报在哪里查询
  • 利润总额为负数净利润怎么算
  • 做买卖交税
  • 核销以前年度的其他应付款
  • 几种方法解决一个问题的架构图怎么画
  • win10任务栏怎么隐藏
  • 差额承兑汇票办法规定
  • win11无法打开开始菜单怎么办
  • php date_diff
  • 在Mac OS Yosemite 系统中如何发送超大邮件附件
  • 冲销以前年度多计提的工资资产负债表怎么平
  • 作废的凭证不能恢复吗
  • threejs loader
  • Docker部署nginx
  • php获取手机型号
  • 自产自销的苗木免税吗
  • br命令怎么用
  • passwd -s命令
  • 审图费谁出
  • 小微企业所得税优惠政策2023
  • 注销营业执照的电话号码是多少
  • 代发工资怎么做
  • 天然气零售企业
  • 飞书slogan
  • 帝国cms如何调用网络
  • 会计期末业务有哪些?
  • 可供出售金融资产属于什么科目
  • 以前年度损益调整结转到哪里
  • 费用可以抵扣什么税
  • 现金流量明细分类
  • 人力资源公司劳务外包
  • 土地使用权的摊销计入在建工程
  • 管理费用月底结转吗
  • 公司国庆节给员工慰问品
  • 员工工资计入成本怎么做账
  • 注册资金没有到位
  • 固定资产处置有净值怎么处理
  • 将sql语句的执行状态传递给主语言的是
  • sql server 用法
  • mysql不能运行
  • win7旗舰版系统激活码
  • 升级win8.1 64位系统后无法玩剑灵怎么办?win8.1系统无法玩剑灵的解决方法
  • windowsxp怎么用
  • 出现windows boot manager
  • 自定义winre
  • 微软软件安装
  • fedora linux安装教程
  • windows无法验证你的凭据
  • 守护者联盟单机游戏
  • linux用户管理器在哪
  • win8.1进入桌面
  • win8桌面右键无法使用
  • 深入理解新发展理念,推进供给侧结构性改革 心得体会
  • dos命令/s
  • js引入css文件
  • animate javascript
  • 安卓病毒查杀软件
  • 不用javascript可以吗
  • jquery使用css方法添加图片边框视频教学
  • jQuery实现table中的tr上下移动并保持序号不变的实例代码
  • 汉口市中心
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设