cocos2dx 3.0版本之后的两大基类

cocos2dx 3.0版本之后的两大基类,一类是Ref类,一类是Value类,本文主要研究他们的内存管理。

我们知道程序运行的时候,内存有分堆区,栈区,全局区,代码区等区域。栈区的内存不需要程序员去手动管理,自动变量、局部变量,都是放在这个区域里的。我们通常意义上讲的内存管理,都是针对堆区的内存管理,alloc、calloc、malloc,new,delete 这些关键字的操作都是针对堆区,下文说的内存也代指堆区。

Ref类在2.0版本是叫CCObject,后来在3.0alpha版本和beta版有叫做Object,最后在3.0正式版上叫做Ref类。很多常见类的基类,比如Node,Director。

先说一下,ObjC的内存管理机制是引用计数机制,简单解释一下引用计数机制,就是这个类有一个整形的变量,当有一个指针指向这个类的实例的时候,这个整形变量就加一,当这个整形变量为0的时候,说明没有指针指向这块内存地址了,这块内存地址就被释放了。内存泄露就是当没有指针指向这块内存地址的时候,这块内存地址还不释放,浪费资源。野指针,就是指针指向一块已经被释放掉的内存地址。引用计数机制有两种管理方式,ARC(自动引用计数管理)和MRC(手动引用计数管理),MRC下,程序员需要自己调用retain,release,autorelease等方法对引用技术进行操作。在ARC下,是编译的时候,编译器会自动加上这些方法。

由于Ref类主要是模仿ojbC的NSObject类,尤其是内存管理方面,所以Ref类同样也是使用引用计数机制,也有retain,release,autorelease等方法,自动内存管理上,有点差别,Ref类主要使用static creat函数自动管理,其实就是放到自动释放池里。

Value类是CPP 11的新内容,基本不用管理内存,因为Value类实例化的对象是放在栈区。包装,可以封装基本数据类型,比如:int,float。使基本数据类型具有面向对象的特点。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值