咱們都知道,智能指針能夠本身釋放內存,不用咱們手動釋放。數組
可是智能指針的默認釋放規則是不支持釋放數組的,這時,須要咱們再稍加操做,就能夠完美釋放,現總結兩個解決方法:ide
方法一:使用C++11提供的模板類 default_delete指針
std::shared_ptr<int>ptr(new int[10],std::default_delete<int[]>());
方法二:自定義釋放規則code
std::shared_ptr<int>ptr(new int[10],myDelete); void myDelete(int* p) { delete []p; } //也能夠用lambda表達式一行寫完,是同樣的效果 std::shared_ptr<int>ptr(new int[10],[](int* p){delete []p;});