c++ - 指向 STL 容器的指针安全吗?

标签 c++ c++11 smart-pointers unique-ptr

如果我做一个 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随叫随到 deletevector 上. vector 的析构函数然后将释放自己分配的内存。 所以它是安全的。

但是vector<int>足够。我没有看到你想要 unique_ptr< vector<int> > 的情况.

关于c++ - 指向 STL 容器的指针安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113990/

相关文章:

C++ intrusive_ptr 问题

c++ - 坚持理解以下 shared_ptr 的初始化方式

c++ - 为什么 g++ 4.9.0 默认有 std::isnan?

c++ - CMake 在 Windows 上找不到 g++ 编译器

c++ - 是否可以限制类实例仅用作临时实例?

c++11 - 完美转发,可变参数模板,initializer_list - 一起

c++ - 如何将 gmock SaveArgPointee 与派生类的 std::shared_ptr 一起使用

c++ - 如何专用于模板模板参数

c++ - Windows 资源管理器打开文件夹还原

C++ regex_match 不工作