OC CVPixelBuffer記憶體管理

2021-10-03 20:39:39 字數 804 閱讀 1237

cvpixelbuffer可以用來儲存多種格式的影象資料,包括yuv/rgba等。在cvpixelbuffer的記憶體管理,包括何時釋放,生命週期等,遇到一些坑,總結如下:

1.oc的部分變數是系統管理,叫做arc控制,不需要開發者來管理;有一些變數不受arc控制(一般是c開頭的變數,cv,cf等),需要開發者手動管理,手動釋放,cvpixelbuffer就是這類變數。

2.oc變數管理,常用兩個函式,cfretain和cfrelease,分別對變數的儲存次數加減一,我想是當這個次數為0時,也即釋放了變數的記憶體,所以通過這兩個函式可以動態控制變數的生命週期。

3.管理cvpixelbuffer生命週期的主要有兩個函式,cvpixelbufferretain(),cvpixelbufferrelease(),這兩個函式與cfretain和cfrelease的作用類似,對cvpixelbuffer變數進行記次,通過cfgetretaincount可以獲取當前的引用次數。最有一次呼叫cvpixelbufferrelease()時,也即引用次數為0時,此時cvpixelbuffer變數記憶體真正釋放,但變數的位址沒變,也不為空,只是裡面記憶體資料銷毀,這個很容易出錯。

4.cvpixelbufferretain()和cvpixelbufferrelease()需成對呼叫,否則很容易記憶體洩漏。

5.一般呼叫cvpixelbufferretain()時,都是將當前pixerbuffer賦值給另乙個pixelbuffer,這樣新的pixelbuffer就可以控制變數記憶體的生命週期,保證在呼叫期間,這片記憶體不在其他地方被釋放。呼叫結束後通過cvpixelbufferrelease()對引用次數減一,釋放對這片記憶體的控制。

ios 記憶體管理,objective c記憶體管理

整理下筆記,如有不準備的地方,望指正。雖然現在蘋果已經大力推崇arc自動記憶體管理,記憶體管理已經不需要我們手動處理,作為新手,還是要了解一下。首先如果是5.x以上版本的xcode,xcode建立新project的時候預設是適用arc的,如果想自己管理記憶體 可以在edit scheme中設定obj...

Linux記憶體管技術分析

題目名稱 linux記憶體管技術分析 指導教師 張志強 2007 12 3 22 11 34 學年 2008 適宜專業 電腦科學與技術,計算機應用與維護,計算機資訊管理,資訊與計算科學 組數 1每組人數 1 內容 分析linux最近幾個版本的記憶體管理方法,頁面替換演算法 對linux頁面替換演算法...

cocos2d x3 0之object記憶體管理

看object類的實現就行了。首先映入眼簾的是它們 protected count of references unsigned int reference count of autorelease unsigned int autoreleasecount 然後我們先看下 reference都在 ...