Class name{
private:
int *ptr=new ptr[10];
public:
//do some thing
~name(){
delete ptr; //should I do this?
}
};
创建这个类后,如果我离开作用域,我应该编写一个自动处理这个动态分配的整数数组的析构函数吗?
答案 0 :(得分:1)
是的,您必须释放您分配的任何内存。但是,必须使用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:
//...
};