2017-02-27 23 views
0

我有一個字符數組,我想使用共享指針 我寫了這樣下面對其進行初始化,但得到語法錯誤分配內存。任何人都可以建議需要修改什麼來完成這項工作。我想要基於行和列的數組大小。 maparray將保存'*'的一堆字符。喜歡的東西:如何使用共享指針代替的malloc的字符數組

*** 
* * 
*** 

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

回答

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個
+0

非常感謝他們兩人的作品完美。我使用獨特的ptrs,因爲我對共享ptr沒有任何特定要求。 – jstandshigh