指向STL容器的指针是否安全?

时间:2015-10-13 22:57:42

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

如果我将unique_ptr指向STL容器的实例,如下所示怎么办?这段代码安全吗?

unique_ptr< vector<int> > p1( new vector<int> );

这不会导致vector<int>被调用两次的析构函数,因为vector<int>本身和unique_ptr都试图清理内存{{1}到目前为止已经获得了?这会导致未定义的行为吗?或者编译器是否知道vector<int>已释放其内存并且为了vector<int>超出范围而不再调用析构函数?

这只是要明白,如果某人愚蠢到可以做到这一点,那会不会很危险?

1 个答案:

答案 0 :(得分:6)

unique_ptr< vector<int> > p1( new vector<int> ); unique_ptr delete vector号召唤vector。 然后vector<int>的析构函数将释放自己分配的内存。 所以这很安全。

但是unique_ptr< vector<int> >就足够了。我没有看到你想要{{1}}的情况。