Class name{
private:
int *ptr=new ptr[10];
public:
//do some thing
~name(){
delete ptr; //should I do this?
}
};
創建此類後,如果我超出範圍,應該寫一個析構函數來自動處理這個動態分配的整數數組嗎?Delete類中的動態分配數組
Class name{
private:
int *ptr=new ptr[10];
public:
//do some thing
~name(){
delete ptr; //should I do this?
}
};
創建此類後,如果我超出範圍,應該寫一個析構函數來自動處理這個動態分配的整數數組嗎?Delete類中的動態分配數組
是的,你必須釋放你分配的任何內存。但是使用new[]
分配的內存必須使用delete[]
釋放,而不是delete
。
class name {
private:
int *ptr = new ptr[10];
public:
//...
~name() {
delete[] ptr;
}
};
什麼你應該做的是使用一個std::vector
或std::array
相反,讓它進行處理,內存管理你。
class name {
private:
std::vector<int> ptr{10};
public:
//...
};
class name {
private:
std::array<int, 10> ptr;
public:
//...
};
因此,如果我聲明它是局部變量(局部於類),在類對象銷燬時,局部變量將被自動銷燬? –
@NygenPatricia是的。非指針類成員在其包含的類被破壞時被破壞。 –
是。所有「新」應該有一個「刪除」電話。 – MayurK