📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

編集の要約なし
291行目: 291行目:
     }
     }
  }
  }
</source>
<br><br>
== vectorの解放(Swap技法) ==
関数内にて宣言して使用するvectorは、その関数を抜ければ自動でメモリの解放を行うが、<br>
クラスのメンバ変数としてvectorを使用する場合は、クラスのデストラクタが実行されるまでメモリの解放を行わない。<br>
<br>
例えば、vectorのclear()関数を実行した場合、要素数は変化するがメモリは解放されない。<br>
特に、サイズの大きい構造体などが解放されないと問題になる時がある。<br>
<br>
そこで使用されるのがSwap技法と呼ばれる手法である。<br>
これは、vectorのswap()関数を使用して一時オブジェクトと交換することで、vectorのデストラクタを強制的に実行させる。<br>
<source lang="c++">
// クラス内に要素数100のvectorを宣言
std::vector<int> m_vec(100);
// Swap技法によるメモリの解放
std::vector<int>().swap(m_vec);
  </source>
  </source>
<br><br>
<br><br>