位置: 编程技术 - 正文

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)

  • 增值税发票综合服务平台怎么下载
  • 抵扣进项税怎么做凭证
  • 跨月发票红字冲销账务处理
  • 税控维护费抵减增值税报表怎么填
  • 某项目全部投资资金的40%由银行贷款
  • 去外地装修
  • 费用的增加会减值吗
  • 企业取得该项资产时实际发生的支出
  • 存货损失
  • 事业单位缴纳税款比例
  • 支付稿费演出费用怎么算
  • 公司聚餐费用标准
  • 购买原材料产生的运输费计入什么科目
  • 未认缴出资的股东退股
  • 企业发工资交税
  • 银票和承兑的区别
  • 企业所得税申报表在哪里打印
  • 小规模企业增值税税率
  • 青苗补偿 税
  • 个人取得的拍卖资格
  • 物业公司物业费都交什么税
  • 个人独资企业没有章程
  • 外购的礼品送客户怎么做分录小规模
  • 房租租赁公司,对方还没付租金,怎么挂帐
  • 发生坏账时的会计处理
  • 盈余公积科目是什么科目
  • 非经营业务
  • PHP:mcrypt_encrypt()的用法_Mcrypt函数
  • 应缴纳的房产税计入什么科目
  • 埃菲尔铁塔翻绳的方法
  • 待抵扣进项税在贷方什么意思
  • 监事和财务负责人可以一个人么
  • vscode怎么写前端代码
  • 网站禁止了有什么方法打开
  • 瑞吉外卖项目简历
  • 随机梯度下降算法优缺点
  • 深度学习如何训练出好的模型
  • laravel分页
  • python迭代器iterator
  • 主营业务成本和生产成本的关系
  • 分公司非独立核算企业所得税处理
  • 请问linux
  • mongodb bi
  • 停工损失会计分录怎么写
  • 小规模纳税人季度不超30万免增值税
  • 对公账户 退款
  • 公司实行全成本核算工资怎么算
  • 费用报销单如何粘贴票据
  • 预收账款变成了什么
  • 固定资产处置如何申报企业所得税
  • 会计计量属性主要包括()
  • 新公司成立第一次会议内容
  • 行政事业单位预算一体化账务处理
  • mysql关联查询原理
  • sqlserver用户权限不给增删查改表结构权限
  • mysqlbinlog -vvv
  • ubuntu系统如何解压文件
  • windows8安装程序
  • 苹果电脑支持的u盘格式
  • windows8怎么更新到最新版本
  • nmstt.exe - nmstt是什么进程 有什么用
  • 在linux操作系统中,/etc/rc.d/init.d
  • lsm.exe是什么进程
  • cocos2dx怎么用
  • google collections
  • unity onbecameinvisible
  • 获取nodejs命令行信息
  • fedora vlc
  • vue框架写淘宝购物车
  • html中如何写java代码
  • unity3d怎么用
  • Embedded statement cannot be a declaration or labeled statement
  • [置顶] 安卓手机连接IP100蓝牙打印机实现打印功能
  • linux显示中文
  • 新一轮税制改革的意义
  • 率土之滨怎么提高建设值上限
  • 进一步深造是什么意思
  • 江苏税务app操作手册
  • 建筑施工劳务资质
  • 北京地税咨询热线
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设