Cocos2d x 記憶體管理 引用計數

2021-07-14 22:22:25 字數 444 閱讀 4847

引用計數是c/c++專案中一種古老的記憶體管理方式。當我8年前在研究一款名叫tcpmp的開源專案的時候,引用計數就已經有了。

在cocos2d-x中轉殖了一套ccautoreleasepool。

有兩點需要注意:

只有兩種情況你需要呼叫release()方法:

ccsprite::create(「player.png」)是乙個使用靜態建構函式的例子。所以在cocos2d-x中所有的類,除了單例,都提供了靜態建構函式,這些靜態建構函式包含下面4項操作:

新建乙個物件

呼叫object->init(…)

假如初始化成功,例如,成功的找到紋理檔案,那麼接下來將會呼叫object->autorelease()。

返回這個已經被標記了autorelease的物件。

所有ccasdf::createwith***x(…)這種型別的函式都有以上這些方式。

cocos2dx引用計數機制

autorelease和release的區別 release是立即釋放引用計數,如果到達0,物件被銷毀。autorelease是延遲釋放,是為了更好管理記憶體產生的。關於ref 乙個ref物件new之後,引用計數為1,retain 執行 1,release 執行 1 autorelease 只是將其...

cocos2dx 記憶體管理

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

cocos2d x 記憶體管理

呼叫了autorelease的物件,將會在自動 池釋放的時候被釋放一次。因為這個操作發生在 mainloop drawscene 後,這時候遊戲中所有的邏輯已經執行完畢,正是釋放無效資源的最佳時機。所以乙個物件被create後,將被放進pool中,其ref 數為1,當遊戲整個邏輯跑完,如果沒有增加r...