位置: 编程技术 - 正文

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)

  • 小规模收到专票怎么处理
  • 什么是所得税税负
  • 税友财务软件一年多少钱
  • 所得税费用怎么算分录
  • 小微企业季度平均资产看每季度吗
  • 药店的主营业务是什么
  • 经营用的电饭锅有哪些
  • 一般纳税人申报纳税的流程
  • 季度利息分录
  • 所得税费按年缴纳?
  • 厂里搬厂赔偿员工标准
  • 员工报销公司是哪个部门
  • 小企业准则汇兑损失计入什么科目
  • 企业所得税滞纳金从什么时候开始算
  • 工程资金占用计算利率是多少
  • 实习生应该如何计算个人所得税
  • 煤炭企业补偿费会计分录
  • 企业间借款利息怎么算
  • 固定资产的确认条件是什么
  • 出纳在银行领了钱出纳要怎样记帐?
  • 投资公司的利息支出可抵扣吗
  • 员工工资超过多少钱要交税
  • 电商公司怎么开发票
  • 个税公司承担怎么做账计入其他应收款怎么平账
  • 个体工商户税种认定的税目可以改吗
  • 非基本人员单位部分
  • 差额开票扣除额可以大概数
  • 未按规定期限办理身份证
  • 事业单位固定资产管理办法
  • 待摊费用当月增加
  • 法人治理包括哪些方面
  • 成品油属于什么费用
  • 债券投资属于什么业务
  • 餐饮的成本核算表格模板
  • pc端微信怎么更新
  • 巴黎先贤祠的名言
  • 对账小技巧
  • 跨国公司外汇资金集中
  • 企业所得税税前扣除凭证(发票)风险提示反馈
  • 研发费用怎样进项抵扣
  • 代垫运费算收入吗
  • 管理费用包括项目成本吗
  • 股本金退出要交税吗?
  • 企业会计准则对收入的定义
  • 递延收益期限
  • 购买电脑的过程
  • 发票为什么被列为金额
  • 大修和维修怎样定义
  • 典当行收房产证吗直接可以拿钱吗
  • 数量金额式明细账余额怎么填
  • 应交税费科目账务处理
  • 用友t3财务通普及版如何开下年账
  • 记账凭证分为哪几类,应具备哪些主要内容
  • sql动态表
  • 因windowssystem32
  • acs_log是什么文件
  • Windows Server 2003服务器安全设置
  • 强化廉洁意识 筑牢思想防线
  • win8系统打开不了软件
  • centos5.10安装
  • WinXP巧用Netsh工具快速填写IP参数
  • win102020h2
  • win8个性化设置
  • win8怎么设置桌面背景
  • windows8怎么搜索文件
  • root忘记密码了怎么办
  • win7无线wifi
  • dos怎么开启
  • eclipse swt教程
  • js中单例模式
  • Node.js中的construct构造函数
  • 用python写一个学生信息管理系统
  • 举例详解民法典第994条
  • python 数据结构库
  • 如何保养铜香炉
  • 源码讲解
  • bootstrap boosting
  • jquery访问本地html
  • 增值税进项发票勾选时间
  • 什么是金融企业的固定推销人员
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设