cocos2d-x内存管理(见解)

本文深入探讨了Cocos2d-x中内存管理机制,包括引用计数、自动内存释放及场景切换策略。通过实例展示了如何合理使用CCDriectro类、CCPoolManager以及内存管理方法来提升游戏性能。重点介绍了内存释放池的作用,以及在场景切换时采用的不同策略以优化内存使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cocos2d-x 延续了cocos2d 和OC的引用计数的内存管理机制!
下面我们来看看CCDriectro类 CCPoolManager::sharedPoolManager()->push();
基础:我们要先熟悉  release  释放该内存!
/-------------------------------------------------------------------
    CCPoint *temp = new CCPoint(controlPoint.x, controlPoint.y);

    m_pControlPoints->addObject(temp);

    temp->release();

---------------------------------------------------------------------/

autorelease 是标记自动释放对象!下面会讲到自动内存释放 是怎么操作的

 

CCString* pRet = new CCString(str);

    pRet->autorelease();

    return pRet;

/====================================================================

CCPoolManager::sharedPoolManager()->pop();  看看这两个方法!就相当于OC的内存释放池! 在CCDriectro中 每次去渲染的时候!都会去查看内存释放池的是否有内存计数为0的对象!如果有的话!就会去清理掉!释放内存! 


其实我们在游戏开发中 注意一些内存的管理,对游戏有很大的帮助!一点一点积攒起来!就会对游戏内存吃紧的问题!有本质的解决!


1,如场景切换  在内存吃紧的情况下 我们可以选择 先清理一下缓存!

 

// 清空缓存 CCDirector::sharedDirector()->purgeCachedData(); 

2,场景切换也有注意的地方!场景切换 有压入式加入!替换式加入!

这里说一下压入场景(pushScene)和弹出场景(popScene)。它们都可以用来显示场景 和保留当前场景并显示新场景 ;不同的是它们不把旧场景从内存中释放掉,这样可以提高加 载速度,这时需要注意,如果内存不足以支撑的话,建议采用replaceScene 函数。


以上过程分为以下三步:

1)调用 CCDirector::sharedDirector()->purgeCachedData() 清空缓存。
2)新建场景。
3)调用 CCDirector::sharedDirector()->replaceScene(this)
 替换新场景。Cocos2D-x 提供了

场景间切换的特效,下一节将会介绍这些内容。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值