• 締切済み

STLの質問です

今、STLの勉強中です。 STLのキューとか、ベクトルとか動的にメモリの割り当てをしてくれますよね。その後、メモリを自動的に解放しますか?もし、解放するであれば、どういうタイミングで解放しますか? 回答の方、お願いします。

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

例えばstd::vectorクラステンプレートの場合、最終的にはデストラクタでアロケータのdeallocateを呼び出しますが、それ以前にもdeallocateは呼び出されます。 具体的には、push_backやresizeなどでサイズを拡大された場合、割付済みの領域で不足していれば、新たな領域をallocateによって割付け、以前の領域をdeallocateで解放します。内部のポインタや反復子を利用している場合は要注意です。

xiaosin
質問者

お礼

回答、ありがとうございました。

  • WizTaka
  • ベストアンサー率53% (7/13)
回答No.2

基本的にはデストラクタで自動的に解放します. つまり通常の変数どーり "スコープの範囲内" だけオブジェクトの寿命が続きます. ただし,new で生成したオブジェクトのポインタを vector 等に保存している場合は,vector のオブジェクトが亡くなる前に中身のオブジェクト達を delete で解放しないといけません. (中身の解放までは面倒を見ないということですね)

xiaosin
質問者

お礼

詳しい回答、ありがとうございます。

xiaosin
質問者

補足

詳しい回答、ありがとうございます。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>その後、メモリを自動的に解放しますか? しますね。 >解放するであれば、どういうタイミングで解放しますか? もちろんデストラクタが呼ばれた時。例えばスコープを抜けたりとか。

xiaosin
質問者

お礼

ありがとうございます。

関連するQ&A