如果我按如下方式將unique_ptr
指向STL容器的實例,該怎麼辦?這段代碼安全嗎?是一個指向STL容器安全的指針嗎?
unique_ptr< vector<int> > p1(new vector<int>);
這是不是導致的析構函數vector<int>
被調用兩次,因爲兩者的vector<int>
本身和unique_ptr
都試圖清理內存的vector<int>
迄今取得的?這可能導致未定義的行爲?或者編譯器以某種方式知道vector<int>
已經釋放了它的內存,並且爲了unique_ptr
超出範圍而不再調用析構函數?
這只是爲了理解,如果有人愚蠢到這樣做,它會是危險的嗎?
對你的代碼沒有任何不安全的感覺,但它實際上不太可能需要'unique_ptr>' –
Praetorian