2016-10-22 1 views

答えて

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はい。非ポインタクラスのメンバーは、そのクラスを含むクラスが破壊されたときに破棄されます。 –

関連する問題