2014-03-31 133 views

回答

3

你必須正確地指定unique_ptr將舉行的類型,它才能正常工作:

std::unique_ptr<A[]> ptr(new A[100]); 

這將默認使用delete[]而不是delete有刪除。

2

如果您正確指定指向類型爲A[]它將正確delete[]指針,因爲數組類型有unique_ptr的模板特化。

請注意,如果可以自動推斷此類型,您就不會有機會出錯。這將需要產生該指針是一個函數調用(在相同的靜脈作爲std::make_pair)的表達,這樣的:

auto ptr = make_unique(new A[100]); 

這是這是一個從C++ 11缺少一個有用的工具,但它一直添加到C++ 14。