我正在尝试创建一个构造函数,删除目录对象名称,然后删除目录中的子目录,最后删除目录本身。但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;
}
答案 0 :(得分:6)
写:
delete [] subDirectories;
确保使用subDirectories
分配new []
。
无论如何,也要停止这样做。如果要共享元素,请使用std::vector<std::unique_ptr<Directory>>
或std::vector<std::shared_ptr<Directory>>
。无论哪种方式,让图书馆为您管理记忆。