如果我有一个类看起来像这样:
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 值或其他基本数据类型?
谢谢, Jonathan
std::vector
而不是手动分配空间。 - Jerry Coffinstd::vector
的移动构造函数和移动赋值运算符将仅复制指针而不是元素,并将另一个对象的指针设置为nullptr
。它适用于即将被销毁的临时对象,因此不必多次复制。在C++03中,您只需要关心析构函数、拷贝构造函数和拷贝赋值运算符。 - chris