指向 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
vector
。
vector
的析构函数然后将释放它自己分配的内存。
所以很安全。
但是vector<int>
就够了。我没有看到您想要 unique_ptr< vector<int> >
.
如果我将 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> >
.