第十一节cocosdx的内存管理机制

这节来描述一下cocosdx 的内存管理机制。
我们通过cclayer.cpp 来进行分析,创建cclayer 的方式为CCLayer::creat();
进入creat 函数去查看,可以看到
CCLayer *pRet = new CCLayer();
if (pRet && pRet->init())

{

pRet->autorelease();
return pRet;
}
关键代码:
pRet->autorelease();
这句话的意思为将此申请的指针保留在内存管理池里面
CCObject* CCObject::autorelease(void)
{
CCPoolManager::sharedPoolManager()->addObject(this);
return this;
}
加入这里面的会在这一帧结束后,引用减一,为0 时则直接释放对象,否则移出管理,说明有人主动
使用
retain()做了引用。

这里有两个函数:
release()和retain();
这两个函数来修改对象的引用次数,如果次数减为0,release()代码会走delete this 释放对象。
这个便是cocos2dx 的内存设计方案

你可能感兴趣的:(android,cocos2dx,实例剖析)