位置: 编程技术 - 正文

cocos2d 内存管理(cocos2dx内存管理)

发布时间:2024-02-27

推荐整理分享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)

  • 一般纳税人购进货物用于免征增值税项目
  • 年度减免税限额
  • 收到退回的留抵退税怎么做账
  • 劳务属于什么工种
  • 增值税发票丢失可以用复印件入账么
  • 银行转账支付凭证有效期多久
  • 盘盈的固定资产怎么做账务处理
  • 会计分录借贷符号
  • 桐木板芯销售
  • 以前年度损益调整科目怎么用
  • 以固定资产增资子公司 可以溢价么
  • 自创商誉企业所得税可以扣除吗
  • 简易征收不动产租赁税率是多少
  • 建筑业交税会计分录
  • 地勘单位需要什么资质
  • 长期股权投资涉及或有对价的帐务处理
  • 小配件出口怎么报关
  • 撤销实收资本会怎么样
  • 企业的其他业务成本包括什么
  • 事业单位转账支票管理
  • 附加税零申报怎么申报
  • 公司退股清算对股东影响
  • 滴滴开的发票能否抵扣进项税
  • 股票属于以下哪一类金融工具
  • mac键盘图标与对号不一致
  • kb4579311安装失败
  • 劳务派遣发票会扣税吗
  • 牛顿地名
  • grid 框架
  • zero-shot, one-shot和few-shot
  • echarts中国地图代码
  • dmesg | grep tty
  • phpcms v9安装教程
  • 库存盘点差异会计分录
  • 个体工商户注册资本是多少
  • 工会经费是应付职工薪酬的借方还是贷方
  • sql已成功与服务器建立连接但登录中发生错误
  • 固定资产计提折旧的会计科目
  • 单位出租不动产,按照5%的征收率计算应纳税额
  • 接受捐赠收入作为广告费扣除基数吗
  • 暂时性差异的产生
  • 抵扣联过期时间
  • 会员卡充值赠送金额怎么做账
  • 补交进项转出的税分录
  • 调整事宜
  • 两个其他应收款的区别
  • 月末制造费用转入生产成本
  • 失业人员的养老金
  • 律师费能计入办公费吗合法吗
  • 新开的公司税务那边要办什么
  • 票折费用是什么意思
  • 附条件的行政行为有哪些
  • 发票开多了如何做凭证?
  • linux下mysql5.7.19(tar.gz)安装图文教程
  • mysql怎么直接向表中写数据
  • deepin 2014系统下安装mysql数据库的方法步骤
  • centos编译器
  • web软件安装
  • U盘安装centos7步骤
  • 电脑运行慢怎么办?
  • win10系统运行速度慢
  • Linux history命令的几个使用小技巧
  • linux init.h
  • 用什么命令最简单
  • GLWallpaperService分析一
  • javascript语言入门教程
  • python三角形角度
  • perl ne
  • 同一个文件夹中的文件可以同名吗
  • linux中命令行
  • windows批处理命令脚本
  • javascript运用
  • 物理引擎演示
  • unity的vs
  • python程序讲解
  • jquery打开文件对话框
  • jquery右键弹出菜单
  • python+flask
  • 税务局周末上班没
  • 净化水服务税务分类
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号