1

我想知道这段代码是否泄漏:

int main()
{
boost::ptr_vector <char> v;
v.push_back(new char[10]);
v.clear()
}

ptr_vector 析构函数或 clear() 函数会删除它包含的指针还是我必须自己做?

4

1 回答 1

-3

从矢量文档(http://www.cplusplus.com/reference/stl/vector/~vector/):

向量析构函数

破坏容器对象。这将调用每个包含元素的析构函数,并释放向量分配的所有存储容量。

delete[] 不会被调用,所以它会泄漏。正如其他评论者所指出的,还有更多的 STL 方法可以做到这一点。

于 2011-02-09T20:48:36.097 回答