C++ 我们可以将char[Undeminated_during_compile_time_size]保存在boost::shared_ptr中吗?

C++ 我们可以将char[Undeminated_during_compile_time_size]保存在boost::shared_ptr中吗?,c++,pointers,boost,char,shared-ptr,C++,Pointers,Boost,Char,Shared Ptr,我可以有一个队列文件\u队列但是在每次char*之后我都需要清理。我有一个dinamic变量int buff\u length即文件队列中每个字符的长度。在队列创建之前,它将从配置文件中设置一次。所以我想知道-是否有可能将char[buff\u length]保存在一个boost::shared\u ptr中,以及如何做到这一点 您可以使用共享_数组: boost::shared_array<char> ptr(new char[buff_length]); std::unique

我可以有一个
队列文件\u队列但是在每次
char*
之后我都需要清理。我有一个dinamic变量
int buff\u length
文件队列中每个字符的长度。在
队列
创建之前,它将从
配置
文件中设置一次。所以我想知道-是否有可能将
char[buff\u length]
保存在一个
boost::shared\u ptr
中,以及如何做到这一点

您可以使用
共享_数组

boost::shared_array<char> ptr(new char[buff_length]);

std::unique_ptr
专门处理数组。我错误地认为,
boost::shared_ptr
也这样做了,但这显然是错误的。

您可以使用
共享_数组

boost::shared_array<char> ptr(new char[buff_length]);

std::unique_ptr
专门处理数组。我错误地认为,
boost::shared_ptr
也这样做了,但这显然是错误的。

使用boost::shared_数组,请参阅文档。

使用boost::shared_数组,请参阅文档。

具有适当处理数组的部分专门化。
新[]
delete[]
我想补充一点,您可能不应该这样做,因为除非您从不更改数组,否则无法知道数组的大小,在这种情况下,编译时常量会更好。您可能应该使用
std::pair
或类似的东西,这样数组也会有它的长度。您能指出这一事实的文档吗?我找不到它。抱歉,我以为它有专门性,但我错了。我已经更正了我的答案。
std::unique\u ptr
具有专门性。“具有适当处理数组的部分专门性。”这不是
new[]
delete[]
的正确解决方案吗?我想补充一点,您可能不应该这样做,因为除非您从不更改数组,否则无法知道数组的大小,在这种情况下,编译时常量会更好。您可能应该使用
std::pair
或类似的东西,这样数组也会有它的长度。您能指出这一事实的文档吗?我找不到它。抱歉,我以为它有专门性,但我错了。我已经更正了我的答案。有专门性的是
std::unique_ptr