删除类中的Dynamic Allocate数组

时间:2016-10-22 07:48:27

标签: c++ memory

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

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

创建这个类后,如果我离开作用域,我应该编写一个自动处理这个动态分配的整数数组的析构函数吗?

1 个答案:

答案 0 :(得分: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:
    //...
};