本系列针对cocos2dx+Lua游戏开发,在本篇中主要Lua对象释放的姿势,避免造成内存泄漏,有写得不好或者写错的地方,麻烦大家帮忙指正。
介绍之前,我们先了解一下游戏运行时,最基本的内存占用。(这里的划分并不标准,只是为了形象介绍划分出来的)
1、贴图内存
2、代码运行内存
其中贴图内存主要包括贴图资源和字体资源。代码运行内存包括平台层,C++层,Lua层等,相对于贴图内存来说,占比较小,但往往一些写法用法不当或导致内存泄漏和贴图内存泄漏。
在这一课我们介绍的是C++对象以及Lua对象释放的姿势,其它的暂不作介绍。
cocos2dx移植于Objective-C,因此和OC一样使用了比较原始的引用计数的方法来管理内存,这里我们说一下Ref引用计数。
Ref(2.x中为CCObject)是引用计数的模型:
1、Ref抽象类(不能实例化,只能由子类实例化);
2、创建默认引用计数为1;// _referenceCount(1);
3、引用计数为0时,执行delete销毁。
retain
引用计数加1,++_referenceCount
release
引用计数减1,–_referenceCount
autorelease
引用计数不变ÿ