- 締切済み
STLの質問です
今、STLの勉強中です。 STLのキューとか、ベクトルとか動的にメモリの割り当てをしてくれますよね。その後、メモリを自動的に解放しますか?もし、解放するであれば、どういうタイミングで解放しますか? 回答の方、お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jacta
- ベストアンサー率26% (845/3158)
回答No.3
例えばstd::vectorクラステンプレートの場合、最終的にはデストラクタでアロケータのdeallocateを呼び出しますが、それ以前にもdeallocateは呼び出されます。 具体的には、push_backやresizeなどでサイズを拡大された場合、割付済みの領域で不足していれば、新たな領域をallocateによって割付け、以前の領域をdeallocateで解放します。内部のポインタや反復子を利用している場合は要注意です。
- WizTaka
- ベストアンサー率53% (7/13)
回答No.2
基本的にはデストラクタで自動的に解放します. つまり通常の変数どーり "スコープの範囲内" だけオブジェクトの寿命が続きます. ただし,new で生成したオブジェクトのポインタを vector 等に保存している場合は,vector のオブジェクトが亡くなる前に中身のオブジェクト達を delete で解放しないといけません. (中身の解放までは面倒を見ないということですね)
質問者
お礼
詳しい回答、ありがとうございます。
質問者
補足
詳しい回答、ありがとうございます。
- koko_u_
- ベストアンサー率18% (459/2509)
回答No.1
>その後、メモリを自動的に解放しますか? しますね。 >解放するであれば、どういうタイミングで解放しますか? もちろんデストラクタが呼ばれた時。例えばスコープを抜けたりとか。
質問者
お礼
ありがとうございます。
お礼
回答、ありがとうございました。