位置: 编程技术 - 正文

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)

  • 受托加工开票如何选名称
  • 应收账款和应付账款的关系
  • 固定资产接受捐赠的计入什么科目
  • 红字信息表撤销失败B80095
  • 技术开发收入免征所得税吗
  • 快递公司增值税怎么算
  • 出差怎么订机票
  • 财务软件计提所得税分录
  • 居民企业核定征收企业所得税的情形有哪些
  • 餐饮店投资入股注意事项
  • 个体工商户怎么注册
  • 小企业开发票了还能零报税吗?
  • 一般纳税人的增值税应纳税额等于
  • 旅游服务费可以抵扣增值税
  • 平均增长率的计算公式初中
  • 对公银行转款备注重要吗
  • 销售折扣与折让影响应收账款周转率吗
  • 增值税普通发票有什么用
  • 生产性生物资产是什么意思
  • 仓库存在不足
  • win10玩游戏提示内存不足无法处理此命令
  • 贷款利率计算公式表格
  • acs_log是什么文件
  • linux系统中配置网卡ip地址的命令为
  • 命令行wifi
  • 国家占耕地补偿款给谁?
  • 企业补缴个人所得税罚款
  • 拆除固定资产
  • 企业利润对外投资会计处理
  • 货物品种不太多而数量又相对较大
  • php图片拼接
  • 计算企业所得税分录
  • 第二季度企业所得税怎么算出来
  • 让渡资产使用权包含哪些内容
  • 工会经费是按应发工资还是实发工资申报
  • datetime2(7)
  • 小规模公司购买空调会计分录
  • 外经证过期没核销罚多少钱
  • 新建配电房需要哪些手续
  • phpcms文档
  • sqlserver存储过程if语句
  • 个人所得税如何纳税
  • 主营业务收入和销售费用的区别
  • 养猪死亡
  • 境内企业借外债,不还会怎么样
  • 坏账计入管理费用,摘要怎么写
  • 公司对公账户没钱了辞退员工
  • 流动比率与速动比率下降说明什么
  • 房地产开发企业建造的商品房,在出售前
  • 公益性捐赠会计利润总额计算方法
  • 会计档案销毁方案怎么写
  • 企业未分配利润包括哪些
  • 路由怎么配
  • 组策略禁止打开文件对话框输入路径
  • 迁移windows
  • ubuntu安装超详细教程
  • ubuntuone
  • 苹果的mac系统
  • win10升级win1
  • 外接法实物图
  • 通过注册表删除脱机打印机
  • windows7怎么添加设备
  • WeatherEye.exe - WeatherEye 是什么进程
  • winde.exe - winde进程是什么意思
  • windows 10的回收站在哪里
  • PQIBrowser.exe是什么进程 PQIBrowser进程查询
  • 家用电脑是什么机型
  • 引发脚本异常
  • unity2d 阴影
  • angularjs4
  • [置顶]JM259194
  • easyui导出excel表格
  • 如何在脚本中调字体
  • jquery easyui 教程
  • python全角半角
  • android adt
  • 广东电子税务系统社保1号都能申报吗
  • 华为领导班子成员名单
  • 税务总局2016年70号公告
  • 怎么查询车船税缴费记录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设