【发布时间】:2014-11-21 00:29:09
【问题描述】:
我有类 NameClass 成员:
class NameClass {
public:
int count;
apple* array;
}
及其构造函数:
NameClass::NameClass()
{
count = 12;
array = new apple[count];
...
}
我应该在类的析构函数中删除这个数组吗?如何?
这会导致错误(“被释放的指针未被分配”):
delete []apple;
or
delete apple;
【问题讨论】:
-
@chris 你知道这是作业。
-
delete []array;是正确的(delete []apple;没有意义,不应该编译,如果苹果是一个类,如代码所示)。如果您仍然收到错误,则您在此处显示的特定构造函数未执行或array在对象的生命周期内被设置为其他值。也许,还有另一个不分配数组的构造函数?也许,你有一个不做深拷贝的拷贝构造函数/拷贝赋值运算符,所以你要删除数组两次(在两个对象中)?我们只能猜测...... -
@Oguk,构造函数只有一个,没有运算符。
-
@mostruash “你知道这是功课。”我们通常不在乎,除非 OP 正确地明确说明了他们的要求和限制。
-
你还需要遵守三法则。
标签: c++ arrays memory-management