如果我有一个看起来像这样的类:
class SomeClass {
public:
SomeClass(int size) {
arr = new int[size];
someInt = size / 10;
};
~SomeClass() {
delete [] arr;
//do I need to somehow delete the int value 'someInt'?
};
private:
int *arr; //pointer to dynamically allocated array
int someInt;
}
究竟应该在析构函数中包含什么以避免内存泄漏?
我知道我需要删除数组,因为它是动态分配的,但我需要对 int 值或其他基本数据类型做任何事情吗?
谢谢, 乔纳森
最佳答案
没有。
但不仅限于基本类型。对于您没有使用 new
分配的任何内容,您不必调用 delete
。 即使是指针。
delete
与成员变量类型(somehow)无关。重要的是您是否在构造函数中(或在类方法中的其他位置)分配它(使用new
)。
经验法则是
Have as many delete as new
Have as many delete[] as new[].
当然,有时你必须删除
一些你没有分配但指向它是否不再需要的东西(由其他人分配,但你是唯一使用它的人)。
当然,有时您必须不 删除
您已分配但其他人指向的东西(由您分配但其他人正在使用它)。
关于c++ - 我需要删除析构函数中的基本数据类型吗? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16090936/