如果我让一个
这样做会导致
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>>
。 - Praetorian