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/