将shared_ptr提升为数组,获得大小

时间:2014-08-11 00:12:58

标签: c++ arrays boost shared-ptr

好的我对这种方法不熟悉,所以可能是错的。但基本上我想要一个shared_ptr数组。使用Boost 1.53+,似乎无需使用make_shared_array。无论如何,我甚至不想分配它 - 但是从指针和大小创建它,并让它被管理。

所以:

// I have a (char* p) to the array, and a (size_t sz) specifying the length of it

// shall I create a shared_ptr like this...
boost::shared_ptr<char[]> sp(p, sz); // is this even right?

// now, how can I get the size of the structure? (assuming sz is out of scope)

丢了吗?那么我可以将所有内容包装在另一个类中,该类还会记住存储数组的大小吗?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

boost::shared_ptr<char[]> sp(new char[100]);

但是您需要手动跟踪大小(在这种情况下为100)。