【发布时间】:2014-09-30 12:22:42
【问题描述】:
我有一个 boost::shared_ptr 的 std::vector 成员到类中的类 Foo 的对象。
函数SetData() 将指向Foo 的新对象的指针添加到向量中。 Foo 的构造函数对pData 指向的数据进行内部复制。
现在当我调用我的Reset() 函数时,所有内存实际上都会被释放吗?
class myClass()
{
void SetData(char* pData, size_t nSize)
{
boost::shared_ptr<Foo> pFoo(new Foo(pData, nSize));
mVector.push_back(pFoo);
}
void Reset()
{
mVector.clear();
}
private:
std::vector<boost::shared_ptr<Foo>> mVector;
};
【问题讨论】:
-
我还有一个问题,如果你不调用 clear 并且 vector 超出范围怎么办。 vector 中的所有智能指针是否都清除了内存?
标签: c++ vector shared-ptr