学习4-Cocos2D-X内存管理系统

对Cocos2D-X内存管理系统的学习主要是从以下三个方面:

1.C/C++内存管理机制

2.引用计数机制

3.自动释放池


一、C/C++内存管理机制

C语言中对内存的管理是由malloc分配,free来释放。
C++中对内存的管理是有new分配,delete释放、new[]/delete[]。
以谁污染谁治理的原则。
ps: 函数调用结束、对象释放时先调用析构函数,而析构函数中通常负责释放。
了解更多的内存分配与释放 请点击

二、引用计数机制

由于经常在代码中会出现内存分配了但是没有释放而造成内存泄漏的问题,所以,cocos2dx有一套引用计数机制,来帮助管理内存。

引用计数机制:在new对象的时候,在对象的构造函数中初始化一个iCount=1来记录该对象被引用的次数,retain对iCount++,release释放的时候先iCount--再判断iCount是否为0,当iCount为0的时候才进行安全释放。
sprite->retain();//count++
sprite->release();//count--
sprite->retainCount();//count
节点树
virtual void addChild(CCNode* child);
virtual void addChild(CCNode* child, int zOrder);
virtual void addChild(CCNode* child , int zOrder, int tag); //都会调用retain()
virtual void removeChild(CCNode* child,boolean cleanup);
void removeChildByTag(int tag, bool cleanup);
virtual void removeAllChildrenWithCleanup(bool cleanup); //调用ccArrayRemoveAllObjects 一个个的release掉

三、自动释放池

前面看到,只有当new 或者 malloc的时候我们才要去管内存。
可是在应用程序中,我们用到的节点都没有去new,所以,这里的全都是由自动释放池去管理了。
自动释放池:
CCPollManager
sprite->autorelease();
更详细的说明请参考 这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值