//
C++11的<memory>中有一整套智能指针,
// 完全可以避免写手动的delete代码,
// 但是它默认使用delete删除对象,
// 如果是数组对象,需要指定自定义的删除方法,支持delete[]
std::shared_ptr< int> p( new int[ 10],
[]( int* p){
delete[] p;
});
// 或者使用helper
std::shared_ptr< int> p( new int[ 10],std::default_delete< int[]>());
// 完全可以避免写手动的delete代码,
// 但是它默认使用delete删除对象,
// 如果是数组对象,需要指定自定义的删除方法,支持delete[]
std::shared_ptr< int> p( new int[ 10],
[]( int* p){
delete[] p;
});
// 或者使用helper
std::shared_ptr< int> p( new int[ 10],std::default_delete< int[]>());
unique_ptr跟shared_ptr不一样,它直接支持持有数组对象
std::unique_ptr<
int[]> p(
new
int[
10]);
//
ok
std::shared_ptr< int[]> p( new int[ 10]); // error, does not compile
std::unique_ptr< int, void(*)( int*)> p( new int[ 10],
[]( int* p){
delete[] p;
});
std::shared_ptr< int[]> p( new int[ 10]); // error, does not compile
std::unique_ptr< int, void(*)( int*)> p( new int[ 10],
[]( int* p){
delete[] p;
});