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

Cocos2D-x内存管理的原则

发布时间:2020-12-14 16:39:20 所属栏目:百科 来源:网络整理
导读:Cocos2D-x采用C++语言进行开发,C++中的对象采用new/delete机制来进行管理,即当创建一个对象的时候,调用new来申请一部分内存,当不需要这个对象的时候,直接调用delete就可以释放这部分内存。这样处理的好处是,程序可以完全掌握内存管理的方方面面;缺点

Cocos2D-x采用C++语言进行开发,C++中的对象采用new/delete机制来进行管理,即当创建一个对象的时候,调用new来申请一部分内存,当不需要这个对象的时候,直接调用delete就可以释放这部分内存。这样处理的好处是,程序可以完全掌握内存管理的方方面面;缺点是程序员有时候会忘记释放内存,就会发生内存泄露,导致不可预计的后果。


Cocos2D-x采用引用计数的方式管理内存,基本原则是当创建一个新对象的时候,内存计数计为1,每次进行retain保留操作的时候,内存计数加1,每次进行release释放操作的时候,内存计数减1。另外,对一个对象进行自动释放对象操作(autorelease)表明这个对象处于自动管理的状态,会在内存管理池CCPoolManager中添加这个对象,并且在自动释放内存池CCAutoreleasePool的堆栈中申请一块内存池放入这个对象。之后在对象不被需要用的时候,引擎会自动清楚它。引擎用单一的线程来进行场景的绘制,通过不断调用主循环这个函数,这个函数除了进行场景的绘制,也会调用CCPoolManager的pop函数对自动管理的对象进行释放操作,pop函数会对CCAutoreleasePool堆栈栈顶的内存池进行操作,将池内的对象标记为非自动管理状态,并进行一次release操作,清除引用计数为1的对象,然后取出前一个入栈的内存池,等待下一轮的释放。


——摘自《cocos2D-x权威指南》P327

(编辑:李大同)

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

    推荐文章
      热点阅读