位置: 编程技术 - 正文

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)

  • 吨位是啥意思
  • 飞机票退票费如何记账
  • 应付账款坏账了怎么处理
  • 生产过程中报废怎么核算成本
  • 其他扣款税后应该怎么做账?
  • 月初缴纳的保险是当月的吗
  • 新租赁准则承租人进项税
  • 信用等级D可以贷款吗
  • 提现的现金支票是什么
  • 个人借款给公司利息多少合法
  • 研发人员的工会经费计入研发费用吗
  • 主营业务净利率和销售净利率一样吗
  • 税务稽查补缴增值税税款的账务处理
  • 一般纳税人问题
  • 无票收入科目
  • 税控盘技术服务费可以抵税吗
  • 进项税额转出是负数是什么意思
  • php内存占用
  • Apache+php+mysql在windows下的安装与配置图解(最新版)
  • Win10版本21H2卡死
  • 退货的会计分录怎么做
  • 工程结算需要哪些施工方案
  • 股东分红个人所得税怎么算
  • 一般经营循环资金周转量为负数
  • php文件上传技术
  • php正则表达式匹配字符串
  • 营业外收入不算收入吗
  • vue3 $bus
  • 微信小程序开发零基础入门
  • 独立的分公司可以注册吗
  • 会计审核费用报销单的职责
  • 增值税政策执行口径存在的问题及建议
  • 工资为0需要申报个税吗
  • c语言指针妙用
  • 加班工资应如何算
  • 保证增信行通俗理解
  • 送货运杂费属于什么收入
  • 农产品增值税免税发票怎么抵扣
  • 附加税减免额怎么算
  • mysql最新版怎么中文
  • 对公账户办理的早晚,对公司有没有影响
  • 直接材料成本总差异怎么算
  • 个人股东和法人股东分红纳税
  • 房产税城镇土地使用税申报期限
  • 筹建期的收入要交企业所得税吗
  • 软件开发企业怎么结转成本
  • 商贸公司经营范围可以写烟酒吗
  • 企业没有工会的需要计提嘛
  • 销售退回的账务处理红字
  • 小规模纳税人开的专票对方可以抵扣吗
  • 商业养老保险有风险吗
  • 非正常损失的原因是什么
  • 销售费用和管理费用的税前扣除
  • 错误凭证如何处理
  • 物流公司保险怎么买
  • 旅行社代订机票怎么做账
  • 账务调整会计分录
  • 64位Win10系统安装Mysql5.7.11的方法(案例详解)
  • pg 正则表达式
  • Windows 8.1下MySQL5.7 忘记root 密码的解决方法
  • 如何制作u盘系统win7
  • windows录音机录音文件格式
  • solaris x86软件 sparc 区别
  • xp系统禁用网络连接
  • xp系统删除用户账户怎么没有删除键
  • win8.1 build9600
  • linux常用命令修改
  • swupdtmr.exe - swupdtmr进程是什么意思 什么作用
  • linux使用zsh
  • window10里的ie浏览器
  • css样式表可以兼容所有浏览器吗
  • android 自定义spinner
  • js鼠标滚动页面触发事件
  • nodejs搭建本地资源服务器
  • 简单介绍linux系统有哪些主要特点?
  • shell脚本中获取日期
  • 广东省电子税务局官网登录入口
  • 税务局纳税服务中心
  • 广州哪里有餐饮费发票
  • 包装种类代码表集装箱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设