cocos2d x 記憶體管理

2021-06-26 11:53:43 字數 503 閱讀 6574

呼叫了autorelease的物件,將會在自動**池釋放的時候被釋放一次。 因為這個操作發生在

mainloop drawscene()後,這時候遊戲中所有的邏輯已經執行完畢,正是釋放無效資源的最佳時機。

所以乙個物件被create後, 將被放進pool中,其ref 數為1, 當遊戲整個邏輯跑完,如果沒有增加retain操作,注意retain有很多地方可以呼叫,比如addchild 等,

那麼pop操作,將會使得它的ref 數變為0, 從而觸發delete 銷毀操作。

由於這個原因,autorelease 可以保證物件在當前幀結束前不會被銷毀。 而release操作則是立即執行的。 

ccobject* factorymethod() 

這裡的原因在於對ret的引用在函式返回前已經結束,所以必須新增

ret->autorelease(); 將引用儲存在乙個pool中,這樣可以保證在自動**池釋放前不會被真正釋放掉的。 因為池中儲存了乙個有效的引用。

cocos2dx 記憶體管理

記憶體管理中經常遇到的問題 記憶體洩露,記憶體溢位。在cocos2dx中用的是引用計數和自動釋放池的技術,由於熟悉objective c語言,所以對這兩個概念不會很陌生。一 引用計數 引用計數是自動記憶體管理的基礎 在物件裡增加乙個引用計數,當外部引用增加時,計數器加1,當外部引用消失時,計數器減1...

cocos2dx 記憶體管理

我們知道,cocos2dx中使用了引用計數的方式去管理記憶體,不需要我們手動delete的去釋放記憶體。那麼cocos2dx中是怎麼實現引用計數的記憶體管理方式的呢?cocos2dx中的記憶體管理用到了兩個工具 引用計數器 ref 自動 池 autoreleasepool 引用計數器 ref ref...

Cocos2d x 記憶體管理

一 記憶體管理機制 cocos2d x是一套基於c 的引擎,c 的記憶體機制,如果採用new關鍵字宣告乙個物件而沒有手動delete掉,那麼申請的記憶體就不會被 進而造成記憶體洩露。cocos2d x是採用引用計數的方式管理記憶體,基本的原則就是當構造乙個物件時,引用計數為1,每次進行retain操...