位置: 编程技术 - 正文

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)

  • 税务局防范税收风险的措施
  • 车险车船税会计分录
  • 专项扣除子女教育大学生可以吗
  • 实收资本多长时间缴纳完?
  • 其他综合收益属于损益类科目吗
  • 小规模企业所得税多少
  • 发票查询校验码看不清怎么办
  • 加计抵扣进项税额会计分录
  • 金融企业逾期贷款税前扣除
  • 支付给个人的佣金怎么做账务处理
  • 出售股票公允价值变动在借方
  • 支付城镇土地使用税会计科目
  • 装修工程分期开票分期付款如何作账?
  • 分包工程款税率
  • 车辆生产企业目录
  • 工业总产值填报原则
  • 补缴的公积金可以抵扣个税吗
  • 口腔医院的发票有什么用
  • 公司员工餐费会计分录
  • 付了款没有收到发票
  • 工会财务总结报告
  • linux转换windows
  • Win7系统Syswow64文件夹是什么及能否删除的相关内
  • 苹果电脑的删除
  • 进口货物可以退回吗
  • 白醋洗脸有什么好处
  • linux系统文件压缩命令
  • 发票认证平台上不去
  • PHP json_encode() 函数详解及中文乱码问题
  • 中秋节给员工买什么福利
  • soft version
  • 购入固定资产后发生的员工培训费应计入固定资产的成本
  • php axios
  • 高薪技术企业研发项目合同范本最新
  • kpk是什么文件
  • 增值税普通发票和电子普通发票的区别
  • 天国拯救晕倒的人多久起来
  • html入门基础
  • 回顾2021年作文
  • 发票明细太多怎么设置见清单
  • 购进销售农产品正常损耗怎么算
  • 企业境外收入境内申报
  • 阿里云安装centos8
  • 非营利组织免征企业所得税的通知
  • 金蝶软件如何建立新账套
  • 个人独资企业的特点
  • linux安装ms
  • 企业应付职工薪酬的会计核算毕业设计
  • 无形资产摊销是按原值吗
  • 政府补贴专项资金补贴开发票
  • 从农民手中购买粮食税率
  • 转账给个人账户
  • 公司委托银行付款的账务处理
  • 服装厂委托物资怎么写
  • 先收发票后付款怎么做分录
  • win8系统c盘占用多大
  • xp系统开机一直在启动界面
  • microsoft window vista
  • centos5.8服务器
  • VMware虚拟机中不支持虚拟化
  • win xp 系统
  • srvc32.exe - srvc32是什么进程
  • win7 显示日期
  • 让xp系统瘫痪
  • window8设置ip
  • win10 右下角
  • windows鼠标失灵怎么办
  • jquery showdialog
  • 感恩节0
  • 结合mint-ui移动端下拉加载实践方法总结
  • 在unity中单例的主要作用
  • 安卓系统休眠设置在哪
  • js文字循环滚动代码
  • Nodejs+angularjs结合multiparty实现多图片上传的示例代码
  • unity接入安卓sdk
  • javascript调用c语言
  • 税务总局机关
  • 上饶二手房契税
  • 两江新区两江大道航空航天产业园
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设