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

Destructor of a pointer to an array

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

string* relatori;

并在 class 构造函数中

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

它是第一个元素有指针的标准数组吗?所以在析构函数中我必须执行以下操作?

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

删除指向的整个数组,因为您使用 [] 分配

  delete []rel;

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

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

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

另请注意,您现在有一个自定义的复制构造函数和移动构造函数、复制和移动赋值,它们开箱即用,可以执行您希望它们执行的操作。