shared_ptr 指針釋放數組

咱們都知道,智能指針能夠本身釋放內存,不用咱們手動釋放。數組

可是智能指針的默認釋放規則是不支持釋放數組的,這時,須要咱們再稍加操做,就能夠完美釋放,現總結兩個解決方法: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;});
相關文章
相關標籤/搜索