指向STL安全容器的指针
Is a pointer to a STL container safe?
如果我使unique_ptr
点到一个STL容器的实例如下?这个代码安全吗?
unique_ptr< vector<int> > p1( new vector<int> );
这不会导致vector<int>
的析构函数被调用两次,因为vector<int>
本身和unique_ptr
都试图清理vector<int>
到目前为止已经获得的内存吗?这会导致未定义的行为吗?或者编译器不知何故知道vector<int>
已经释放了它的内存,并且为了unique_ptr
超出作用域而不再调用析构函数?这只是为了理解,如果有人愚蠢到这样做,这可能是危险的吗?
unique_ptr< vector<int> > p1( new vector<int> );
和unique_ptr
在vector
上调用delete
。然后,vector
的析构函数释放它自己分配的内存。所以是安全的。
但是vector<int>
就足够了。我不认为你需要unique_ptr< vector<int> >
。
相关文章:
- 删除包含包含动态对象的 STL 容器的智能指针
- 是否有一种 STL 算法可以最后找到,但它也适用于指针?
- STL 函数和函数类型与函数指针类型
- C++ STL 数据结构常时按索引推送/弹出/随机访问,并具有指向元素的可靠指针
- 如何在C++中重新实现包含指针的 STL 容器的类的迭代器
- 如何避免自定义 STL 向量类的智能指针 delete[] 异常?
- 用于 STL 迭代器、指针和 std::nullptr_t 的模板函数
- 通过函数指针对类内的 STL SET 使用自定义比较器
- STL映射比较器能否以某种方式获取指向映射本身的指针?
- 指针类型上的 STL 函数对象
- 清除 C++ 中的指针的 STL 列表
- 限制指针访问STL ::向量元素
- 有没有一种 stl 方法来执行指针向量的深度复制
- 析构函数在与 STL 的共享指针中调用两次
- 指向类的指针的 STL 映射的 SWIG 类型图
- C 指针数组使用STL开始和结束
- 使用带有COM接口的STL智能指针
- STL 算法 + c'tor 不再适用于指向 C 数组的原始指针,因为指向一个过去的末端
- 多态性和STL容器.指针是不必要的
- 如何用类指针(STL)初始化向量