可以在数组上使用C++make_shared吗

can C++ make_shared be used on arrays?

本文关键字:C++make shared 数组      更新时间:2023-10-16

将其转换为共享ptr很容易:

MyObject * myObject = new MyObject( int n );
auto myObject = make_shared<MyObject>( n );

但是如果我的代码是一个数组呢?

char * myChars = new char[n];
auto myChars = make_shared<char>????

我希望得到的指针指向一个数组,该数组在超出范围时调用每个元素的默认dtor。这可能吗?

很可能,在C++11中,可以在数组上使用shared_ptr,但前提是手动提供适当的deleter。与在T[]上显式地具有部分专用化的unique_ptr不同,shared_ptr没有,但它可以提供自定义的deleter。