指向数组的指针的析构函数

时间:2019-01-26 10:35:20

标签: c++ string pointers constructor destructor

我有一个指向字符串的指针

string* relatori;

以及在类构造函数中

Conference() : numMaxRel(10)
{
    relatori = new string[numMaxRel];
}

这是一个在第一个元素上带有指针的标准数组?那么在销毁者内部,我必须执行以下操作吗?

Conference::~Conference()
{
    delete rel;
}

2 个答案:

答案 0 :(得分:0)

删除自您使用[]分配以来指向的整个数组

  delete []rel;

答案 1 :(得分:0)

delete rel无法释放数组的内存。为此,您必须使用delete[] rel。但是,您应该意识到,可以使用标准库中的容器来为您执行内存管理,例如std::vector<string>。这几乎应该始终是首选方式。这就是您的类的样子(注意:您不需要析构函数):

class Conference
{
public:
    Conference() : numMaxRel(10)
    {
        rel.reserve(numMaxRel);
    }

private:
    size_t numMaxRel;
    std::vector<std::string> rel;
};

还请注意,您现在拥有了一个自定义的复制构造函数和移动构造函数,复制和移动分配,它们可以按需完成它们所要做的事情。