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