プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (3件)

例えばstd::vectorクラステンプレートの場合、最終的にはデストラクタでアロケータのdeallocateを呼び出しますが、それ以前にもdeallocateは呼び出されます。


具体的には、push_backやresizeなどでサイズを拡大された場合、割付済みの領域で不足していれば、新たな領域をallocateによって割付け、以前の領域をdeallocateで解放します。内部のポインタや反復子を利用している場合は要注意です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/01/15 10:49

基本的にはデストラクタで自動的に解放します.


つまり通常の変数どーり "スコープの範囲内" だけオブジェクトの寿命が続きます.

ただし,new で生成したオブジェクトのポインタを vector 等に保存している場合は,vector のオブジェクトが亡くなる前に中身のオブジェクト達を delete で解放しないといけません.
(中身の解放までは面倒を見ないということですね)

この回答への補足

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

補足日時:2008/01/15 00:37
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/01/15 00:38

>その後、メモリを自動的に解放しますか?


しますね。

>解放するであれば、どういうタイミングで解放しますか?
もちろんデストラクタが呼ばれた時。例えばスコープを抜けたりとか。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2008/01/15 00:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!