質問: ふと気になったのですが vector型の変数を使い終わった後って、 そのまま関数を抜けたり再度宣言し直した時は何も処理しないでもメモリの解放をやってくれていると考えて良いのでしょうか
回答: 「使い終わった後」が専門用語でなくていかにもあいまいですが > > 何も処理しないでもメモリの解放をやってくれていると考えて良いのでしょうか > > > `std::vector` 型の自動変数が寿命を迎えるとき、という意味なら Yes 専門用語で「デストラクトされる」ときにはメモリの解放を行います。 ``` void func(int n) { std::vector a(n); ... } // この行に達したとき a は寿命を迎え、メモリは解放されます ``` 別例追加 ``` void func2(int n, int m) { // この例は n 回のループをしている場合で // (コンストラクト+デストラクト)はセットで n 回行われる for (int i=0; i a(m); // ここでコンストラクト=メモリ確保される ... } // ここで a はデストラクトされる=メモリは解放される // ここではなにも起きない } ``` プログラム上「メモリが解放」されても、タスクマネージャ等から見たメモリ使用量が即座に減るようなことはないことには注意。そんな重い処理を毎度毎度していると無駄なだけです。