//
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;
});