C++ 我应该自己擦除boost::ptr_向量的指针吗?

C++ 我应该自己擦除boost::ptr_向量的指针吗?,c++,boost,memory-leaks,ptr-vector,C++,Boost,Memory Leaks,Ptr Vector,我想知道这个代码是否泄漏: int main() { boost::ptr_向量v; v、 推回(新字符[10]); v、 清除() } ptr_向量析构函数或clear()函数会删除它包含的指针吗?还是我必须自己删除 来自矢量文档(http://www.cplusplus.com/reference/stl/vector/~vector/): 向量析构函数 销毁容器对象。这 调用包含的每个元素的 析构函数,并取消分配所有 服务器分配的存储容量 向量 delete[]不会被调用,因此它将泄漏

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


int main()
{
boost::ptr_向量
v;
v、 推回(新字符[10]);
v、 清除()
}


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

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

向量析构函数

销毁容器对象。这 调用包含的每个元素的 析构函数,并取消分配所有 服务器分配的存储容量 向量


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

v.push_back(新字符[10])我不认为这是你认为的那样。查看Boost文档
push_back
仅涵盖单个元素。(无论如何,被调用方都无法知道您分配的大小。)它向ptr_向量添加了一个动态字符数组。它在我正在审阅的代码中使用,工作正常,但我不确定内存是否已释放。@ephephere:Following
new[]
with
delete
调用未定义的行为。这纯粹是巧合,它似乎工作正常。此外,似乎您只是想要一个
std::vector
。FredOverflow是正确的,请尝试通过valgrind或类似的方式运行代码。问题是关于
boost::ptr_vector
,而不是
std::vector