指向STL安全容器的指针

Is a pointer to a STL container safe?

本文关键字:指针 STL 安全 指向      更新时间:2023-10-16

如果我使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_ptrvector上调用delete。然后,vector的析构函数释放它自己分配的内存。所以是安全的。

但是vector<int>就足够了。我不认为你需要unique_ptr< vector<int> >