lurenaa的博客

C++11在shared_ptr是没有shared_ptr<int []>这样的东西的,
但是std::unique_ptr<int[]>是有的

1
2
3
4
5
std::shared_ptr<int[]> a(new int[10]()); // 错误,c++17前不能传递数组类型作为shared_ptr的模板参数
std::unique_ptr<int[]> b(new int[10]()); // ok, unique_ptr对此做了特化

std::shared_ptr<int> c(new int[10]()); // 错误,可以编译,但会产生未定义行为,请不要这么做
std::shared_ptr<int> sp3(new int[10](), std::default_delete<int[]>()); //正确做法