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

时间:2015-02-04 18:45:22

标签: c++ arrays memory destructor delete-operator

我正在尝试创建一个构造函数,删除目录对象名称,然后删除目录中的子目录,最后删除目录本身。但delete [] *subDirectories行会在使用时导致段错误。

子目录由

分配
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;
}

1 个答案:

答案 0 :(得分:6)

写:

delete [] subDirectories; 

确保使用subDirectories分配new []

无论如何,也要停止这样做。如果要共享元素,请使用std::vector<std::unique_ptr<Directory>>std::vector<std::shared_ptr<Directory>>。无论哪种方式,让图书馆为您管理记忆。