#include<iostream>
#include<memory>
template<typename T>
std::shared_ptr<T> make_shared_array_tpl(size_t size) {
return std::shared_ptr<T>(new T[size], std::default_delete<T[]>());
}
int main(){
//lambda
std::shared_ptr<int> sp(new int[10], [](int* p){delete [] p;});
//default
std::shared_ptr<int> sp1(new int[10], std::default_delete<int[]>());
//define template function
std::shared_ptr<char> sp2 = make_shared_array_tpl<char>(10);
}
如果不需要赋值给另一个共享对象使用unique_ptr更直观简单
std::unique_ptr<int[]> sp(new int[10]()); //初始化为0
C++11 使用智能指针管理动态数组
最新推荐文章于 2025-02-10 22:29:45 发布