如何删除一个空的对象数组

How do you delete an empty array of objects?

本文关键字:对象 数组 一个 何删除 删除      更新时间:2023-10-16

我正在尝试创建一个构造函数,该构造函数删除目录对象名称,然后删除目录中的子目录,最后删除目录本身。然而,delete [] *subDirectories行在任何时候使用时都会导致segfault。

子目录由分配

subDirectories[subDirectoryCount++] = new Directory(arguments[1], umask, time, this); 
Directory::~Directory()
{
    delete [] name;
    for (int i = 0; i < subDirectoryCount; i++)
       delete subDirectories[i];
    delete [] *subDirectories;
}

写入:

delete [] subDirectories; 

确保使用new []分配subDirectories

不管怎样,也别再那样做了。如果要共享元素,请使用std::vector<std::unique_ptr<Directory>>std::vector<std::shared_ptr<Directory>>。无论哪种方式,都让库为您管理内存。