//OK, pointer to int 999
std::shared_ptr<int> sp(new int(999)); 


template< typename T >
struct array_deleter
{
  void operator ()( T const * p)
  { 
    delete[] p; 
  }
};

// pointer to int array, 
// (1) provide array deleter
std::shared_ptr<int> sp(new int[10], array_deleter<int>()); 

// (2) or lambda expression 
std::shared_ptr<int> sp(new int[10], [](int *p) { delete[] p; });

// (3) or use default_delete
std::shared_ptr<int> sp(new int[10], std::default_delete<int[]>());

// (4) or we can use unique_ptr
std::unique_ptr<int[]> up(new int[10]); // this will correctly call delete[]

相关文章:

  • 2022-01-11
  • 2022-01-04
  • 2021-10-28
  • 2021-11-09
  • 2022-12-23
  • 2021-08-14
  • 2021-10-22
  • 2022-12-23
猜你喜欢
  • 2022-01-27
  • 2021-04-18
  • 2021-12-18
  • 2022-12-23
  • 2022-01-25
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案