1. 程式人生 > >第十一節cocosdx的記憶體管理機制

第十一節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 的記憶體設計方案