如何使用共享指针而不是malloc为char数组分配内存

时间:2017-02-27 05:04:49

标签: c++11

我有一个字符数组,我想用共享指针初始化它 我在下面写了这样的,但是语法错误。任何人都可以建议需要修改什么来使这项工作。我想要基于行和列的数组大小。 maparray将包含' *'的一堆字符。类似的东西:

***
* *
***

 std::shared_ptr<unsigned char*> maparray;
 maparray=std::make_shared<unsigned char*>(rows*cols);

1 个答案:

答案 0 :(得分:2)

您可以通过将Array删除指定为

来使用相同的内容
shared_ptr<unsigned char> sh (new unsigned char[10], std::default_delete<unsigned char[]>());

默认情况下make_shared不能用于数组。相比之下unique_ptr(如果shared_ptr没有硬性要求)是对数组的安静容忍。您可以使用unique_ptr作为

unique_ptr<unsigned char[]> sh = make_unique<unsigned char[]>(10);
  • 请注意:make_unique()仅在C ++ 14中可用