【发布时间】:2019-06-20 00:19:34
【问题描述】:
我有一个指向字符串的指针
string* relatori;
在类构造函数中
Conference() : numMaxRel(10)
{
relatori = new string[numMaxRel];
}
这是一个标准数组,第一个元素上有一个指针?所以在 destrcutor 内部我必须执行以下操作?
Conference::~Conference()
{
delete rel;
}
【问题讨论】:
-
你
delete,你new,你delete[],你new[]。混合这些(就像你在这里所做的那样)是未定义的行为(需要delete[] relatori;)。 -
使用
std::vector,不用再担心这种事情了。 -
是的,如果您在构造函数中使用运算符“new”分配内存,则需要通过在析构函数中调用“delete”来释放内存。但也许为你使用 std::vector 更好?
-
现在试试这个 --
{Conference c1; Conference c2 = c1;}-- 即使你使用了正确的delete[]形式,这只会导致你进入上面显示的错误(双重删除)。你会从煎锅里跳进火里。只需使用std::vector。
标签: c++ string pointers constructor destructor