指向 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 一起调用 delete vectorvector 的析构函数然后将释放它自己分配的内存。 所以很安全。

但是vector<int>就够了。我没有看到您想要 unique_ptr< vector<int> >.