【发布时间】:2015-08-27 09:05:37
【问题描述】:
说我有:
vector<string>* foo = new vector<string>();
我添加了大量的东西,使用它,然后我只是调用:
delete foo;
我需要先致电foo.clear(); 吗?或者delete 会调用析构函数吗?
请不要让 cmets 知道这是多么愚蠢,我知道这里至少应该使用自动指针。这种行为存在于我正在使用的代码库中,我无法修复它。
【问题讨论】:
-
您可以在 Internet 上的多个地方找到有关标准容器的信息以及标准中的几乎所有其他内容。您可以搜索“std::vector destructor”来查找该信息
-
一旦你删除了它,你为什么要关心它是否被清除了?
-
@Ben He 可能会担心所包含对象的析构函数被调用。
-
@Ben:这样你就不会出现内存泄漏?还是元素破坏失败的其他不良影响?为什么不会你在乎?
标签: c++ vector destructor dynamic-memory-allocation