「new」を使用して関数内のローカル文字配列に新しいメモリを割り当てる場合、関数が戻る前に削除を使用する必要がありますか?
とにかく関数が戻った後、自動的に削除されませんか?
はい、必要です:new
またはを使用して動的ストアに何かを割り当てる場合new[]
、コンパイラは、関数が戻った後に割り当てられたオブジェクトを渡す計画がないことを認識しないため、delete
(またはdelete[]
) を呼び出して解放するのはユーザーの責任です。割り当てたオブジェクト。
unique_ptr<T>
を明示的に呼び出すのを避けるために使用できますが、呼び出しはあなたに代わってdelete
のデストラクタによって行われます。unique_ptr<T>
はい、で割り当てられた変数は、関数が戻ったときに自動的に解放されnew
ず、削除する必要があります。
はい、はい、はい、はい、はい。auto_ptr
またはなどのスマート ポインターを使用していない限り、 を使用してメモリの割り当てを解除するboost::shared_ptr
必要があります。delete
new
は現在のスタック フレームに依存しないヒープに割り当てるため、C++ が現在のスタック フレームを破棄しても、メモリの割り当ては解除されません。を使用する場合はnew
、常に使用する必要がありますdelete
。限目。