咱们都知道,智能指针能够本身释放内存,不用咱们手动释放。数组
可是智能指针的默认释放规则是不支持释放数组的,这时,须要咱们再稍加操做,就能够完美释放,现总结两个解决方法: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;});