位置: 编程技术 - 正文

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到专业版
  • 民法典对知识产权的定义
  • 笔记本如何刷新bios
  • 网页读出来
  • 分享下会画画是怎样的体验
  • 承包合同包含的内容
  • dgservice.exe是什么软件
  • 磷酸二氢钙生产
  • 灯光璀璨的夜晚
  • 采购过程中发生材料毁损,由保险公司赔偿的部分
  • 低值易耗品摊销方法名称怎么选
  • php连接mysql数据库步骤正确的是
  • iis部署javaweb
  • 持有至到期投资账务处理
  • html前端技术
  • html怎么用java
  • 小程序开发定制
  • 织梦百科
  • 入库单如何做账分录
  • 住宿收据怎样写
  • 建筑公司内账收什么费用
  • 政府补助如何会计核算
  • 贷款利息进项税为什么不能抵扣
  • 合伙企业分红怎么做账
  • 收到法院退回的诉讼费怎么做账
  • 公司借款给个人400万合法吗
  • 固定资产抵扣影响税负
  • 预提成本费用的会计分录
  • 基本工资和什么挂钩
  • 红字信息表状态b900077
  • 一级资本充足率不得低于
  • 企业开办费计入什么科目
  • excel日记账系统的设置
  • 公司买支票需要带什么资料
  • sqlserver中时间类型
  • sqlserver模糊查询不用like
  • 勒索病毒2021
  • winxp u盘拒绝访问
  • 苹果发布会最新消息
  • centos server
  • u盘安装启动盘
  • win7系统设置wifi热点
  • win10系统运行速度慢
  • linux socket 常用函数小结
  • win7纯净版和正版区别
  • linux命令删除指定目录
  • linux怎么挂载文件夹
  • 实例讲解命局与大运流年作用
  • android自定义控件入门与实战
  • c#openxml
  • js的getattribute
  • js判断函数
  • 熟悉的拼音
  • html css js 实战案例
  • 吉林市无犯罪记录证明网上申请流程
  • 安徽省国家税务局电子税务局
  • 国税局和地税局分别征收什么税种
  • 越南入关要给小费吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设