2016-07-17 12 views

答えて

6

はいdelete matrix;は問題ありません。

ベクトルを動的に割り当てる必要があるかどうかを検討したい場合があります。ベクタは常にそのデータをフリーストア(ヒープ)に格納するため、その理由で動的に割り当てられる必要はありません。彼らは非常に小さなスタックフットプリントを持っています。あなた動的その後、あなたが真剣なstd::unique_ptrstd::shared_ptrとしてスマートポインタを使用することを検討すべきであるあなたのベクトルを割り当てる必要がある場合は

、その後はまったくdeleteを呼び出す必要はありません。

auto matrix = std::make_unique<std::vector<std::vector<int>>>(); 
+0

別の質問でベクトルを動的に割り当てる必要がある場合は、私は対処します。ありがとうございました。 –

2

はい、あります。 delete matrixは、メモリを返す前にstd::vector<std::vector<int>>のデストラクタを呼び出します。デストラクタ呼び出しは、すべての要素のデストラクタ、std::vector<int>を呼び出します。

また、ほとんどの用途では、std::vectorをヒープ上に作成する必要はありません。私はあなたの場合と同じと思う。

関連する問題