加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2dx 3.0版本之后的两大基类

发布时间:2020-12-14 20:48:38 所属栏目:百科 来源:网络整理
导读:cocos2dx 3.0版本之后的两大基类,一类是Ref类,一类是Value类,本文主要研究他们的内存管理。 我们知道程序运行的时候,内存有分堆区,栈区,全局区,代码区等区域。栈区的内存不需要程序员去手动管理,自动变量、局部变量,都是放在这个区域里的。我们通常

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。使基本数据类型具有面向对象的特点。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读