即使在堆中创建了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/

10-12 23:56