2017-02-27 9 views
0

文字配列があり、共有ポインタを使用して初期化したい 以下のように記述しましたが、構文エラーが発生しました。誰もがこの仕事をするために修正が必要なものを提案することはできますか?私は行と列に基づいて配列のサイズが必要です。 maparrayは束の文字「*」を保持します。以下のような何か:文字配列にmallocの代わりに共有ポインタを使用してメモリを割り当てる方法

*** 
* * 
*** 

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

答えて

2

あなたはデフォルトmake_sharedことで

shared_ptr<unsigned char> sh (new unsigned char[10], std::default_delete<unsigned char[]>()); 

は、配列のために使用することができないようArrayが削除指定することで、同じように使用することができます。対照的に、unique_ptr(厳しい要求がない場合はshared_ptr)は静かであり、配列に対して寛容です。あなたは

  • unique_ptr<unsigned char[]> sh = make_unique<unsigned char[]>(10); 
    

    ように注意してくださいunique_ptrを使用することができます)make_uniqueを(だけで、それらの両方が完璧に動作たくさんC++ 14の
+0

おかげで利用可能です。私は共有ptrのための特定の要件を持っていないので、ユニークなptrsと一緒に行く。 – jstandshigh

関連する問題