口訣:
1.誰建立,誰釋放。通過new或者clone建立的物件,必須呼叫release或者autorelease。
2.new,clone以外的方法建立的物件都被宣告了autorelease。
3.誰retain,誰release。無論這個物件是如何生成的,只要呼叫了retain就要呼叫release。
正規化:1.建立乙個autorelease物件:
auto obj=new myclass();
obj->autorelease;
2.release乙個物件後,立即清空指標:
auto obj=new my class();
obj->release();
obj=nullptr;
3.指標賦值給另乙個指標
auto obj1=new myclass();
auto obj2=obj1 ;
obj2->retain();
//obj2 do something...
obj2->release();
obj2=nullptr;
4.在乙個函式中建立並返回物件,需要把這個函式設定為autorelease:
myclass* getinstance(){
my class *instance=new myclass();
instance->autorelease();
return instance;
記憶體管理學習筆記
1.棧 堆和靜態區 靜態區 儲存自動全域性變數和static變數 包括全域性靜態變數和區域性靜態變數 靜態區的內容在整個程式的生命週期內都存在。棧 儲存區域性變數。棧上的內容只在函式的範圍內存在,當函式執行結束,這些內容也會自動被銷毀。其特點是效率高,但是空間大小有限。堆 由malloc系列函式或n...
object c 記憶體管理學習筆記
nsautoreleasepool pool nsautoreleasepool alloc init pool drain 這個函式可以把autoreleasepool裡的物件釋放 在for迴圈中每次都釋放記憶體池的示例 nsautoreleasepool temppool for i 0 i a...
c記憶體管理學習總結
1.c中分配記憶體有malloc 和calloc 函式,它們返回乙個位址指標,malloc 函式使用如下 double ptd ptd double malloc 30 sizeof double 這段 請求30個double型別值的空間,並把ptd指向該空間所在位置。calloc 函式使用如下 l...