2016-10-22 99 views
0
Class name{ 
private: 
int *ptr=new ptr[10]; 

public: 
//do some thing 
~name(){ 
     delete ptr; //should I do this? 
    } 
}; 

創建此類後,如果我超出範圍,應該寫一個析構函數來自動處理這個動態分配的整數數組嗎?Delete類中的動態分配數組

+0

是。所有「新」應該有一個「刪除」電話。 – MayurK

回答

1

是的,你必須釋放你分配的任何內存。但是使用new[]分配的內存必須使用delete[]釋放,而不是delete

class name { 
private: 
    int *ptr = new ptr[10]; 

public: 
    //... 

    ~name() { 
     delete[] ptr; 
    } 
}; 

什麼你應該做的是使用一個std::vectorstd::array相反,讓它進行處理,內存管理你。

class name { 
private: 
    std::vector<int> ptr{10}; 

public: 
    //... 
}; 

class name { 
private: 
    std::array<int, 10> ptr; 

public: 
    //... 
}; 
+0

因此,如果我聲明它是局部變量(局部於類),在類對象銷燬時,局部變量將被自動銷燬? –

+0

@NygenPatricia是的。非指針類成員在其包含的類被破壞時被破壞。 –