即使在堆中创建了STL中的vector之类的容器对象,该如何销毁它们呢?
编辑
如果容器包含指针,那么如何销毁那些指针对象
最佳答案
指针的STL容器不会清除指向的数据。它只会清理保存指针的空间。如果您希望 vector 清除指针数据,则需要使用某种智能指针实现:
{
std::vector<SomeClass*> v1;
v1.push_back(new SomeClass());
std::vector<boost::shared_ptr<SomeClass> > v2;
boost::shared_ptr<SomeClass> obj(new SomeClass);
v2.push_back(obj);
}
当该作用域结束时,两个 vector 都将释放其内部数组。 v1将泄漏已创建的SomeClass,因为只有指向它的指针在数组中。 v2不会泄漏任何数据。
关于c++ - STL容器如何删除?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/383016/