Cocos2D-x内存管理的原则

前端之家收集整理的这篇文章主要介绍了Cocos2D-x内存管理的原则前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

猜你在找的Cocos2d-x相关文章