Cocos2dx3.10引擎的底层及内存管理机制

Cocos2dx3.10引擎的底层及内存管理机制,第1张

概述思考一个问题:cocos2dx游戏引擎内存管理机制,为什么不使用C++的Shared_ptr这个看似完美的内存管理方案,而是引擎自身去实现一套机制? 一、引擎启动          每个Cocos2d工程创建完,都会有AppDelegate/HelloWorldScene文件,AppDelegate是cocos2d引擎的入口类,引擎启动时首先会去加载AppDelegate类 AppDelegat

思考一个问题:cocos2dx游戏引擎的内存管理机制,为什么不使用C++的Shared_ptr这个看似完美的内存管理方案,而是引擎自身去实现一套机制?


一、引擎启动

每个Cocos2d工程创建完,都会有AppDelegate/HelloWorldScene文件,AppDelegate是cocos2d引擎的入口类,引擎启动时首先会去加载AppDelegate类

AppDelegate.h




二、引擎内存管理
Node的管理 : (继承关系,U3D是组成关系),整个引擎的管理关系是树形结构的节点
在Node中,有个指针容器成员m_pChildren,存放了当前节点下的所有子节点,可通过addChild()方法增加子节点,将所有子节点的指针都存放在当前节点的容器中,只需要纵向查询即可,不再需要横向查询了。
◆ 内存管理基本思想:引用计数,跟C++的share_ptr、weak_ptr是俩个概念,处理自动释放的原理具有相似性
通过计数的方式,实现多个不通的对象同时引用一个共享对象; 当创建一个对象的实例并在堆上分配内存时,对象的引用计数为1,(即new出来后,初始计数值是1);在其他对象中需要持有这个共享对象时,需要把共享对象的引用计数加1;当其他对象不再持有该共享对象时,共享对象的引用计数减1;当共享对象的引用计数变为0时,该共享对象的内存会被立即释放。
retain : 增加计数 release : 减少计数 autorelease : 将一个对象交给自动释放池autoreleasePool进行管理,由autoreleasePool负责调用release函数


























总结

以上是内存溢出为你收集整理的Cocos2dx3.10引擎的底层及内存管理机制全部内容,希望文章能够帮你解决Cocos2dx3.10引擎的底层及内存管理机制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1079843.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存