を割り当てられました。このオブジェクトを削除する正しい方法は何ですか?は、だから私は、ヒープが割り当てられているベクトルのベクトルを持つ2次元ベクトル
delete matrix
はすべての内部ベクトルの割り当てを解除しますか?
を割り当てられました。このオブジェクトを削除する正しい方法は何ですか?は、だから私は、ヒープが割り当てられているベクトルのベクトルを持つ2次元ベクトル
delete matrix
はすべての内部ベクトルの割り当てを解除しますか?
はいdelete matrix;
は問題ありません。
ベクトルを動的に割り当てる必要があるかどうかを検討したい場合があります。ベクタは常にそのデータをフリーストア(ヒープ)に格納するため、その理由で動的に割り当てられる必要はありません。彼らは非常に小さなスタックフットプリントを持っています。あなたが動的その後、あなたが真剣なstd::unique_ptrやstd::shared_ptrとしてスマートポインタを使用することを検討すべきであるあなたのベクトルを割り当てる必要がある場合は
、その後はまったくdelete
を呼び出す必要はありません。
auto matrix = std::make_unique<std::vector<std::vector<int>>>();
別の質問でベクトルを動的に割り当てる必要がある場合は、私は対処します。ありがとうございました。 –
はい、あります。 delete matrix
は、メモリを返す前にstd::vector<std::vector<int>>
のデストラクタを呼び出します。デストラクタ呼び出しは、すべての要素のデストラクタ、std::vector<int>
を呼び出します。
また、ほとんどの用途では、std::vector
をヒープ上に作成する必要はありません。私はあなたの場合と同じと思う。
はい、なぜ最初に動的にベクトルを割り当てていますか?それは本当にめったに意味がありません。 –