如果我做一个 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
在 vector
上.
vector
的析构函数然后将释放自己分配的内存。
所以它是安全的。
但是vector<int>
足够。我没有看到你想要 unique_ptr< vector<int> >
的情况.
关于c++ - 指向 STL 容器的指针安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113990/