のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

C++ STL vectorのメモリ解放

Sponsored Links

皆さんこんにちは
お元気ですか?私は眠いです!I love sleeping

さて、今日は微妙なTips。STLvectorです。

vectorの解放について

このvector色々と使い勝手いいですよね。なんかオブジェクトとかフリーダムに入れれたり、ネストできたりと最高でございます。

しかし、このvector実は、deleteできません。

つまり、デストラクタを呼び出さないとメモリから解放されないといった残念なシステムとなっているわけです。

因みにclear関数でも解放はされません。悪しからず

さて、一見全くをもって解放手段が思い浮かばないこのvectorですが、たったひとつだけあるようです。

vector<int> arr(5);
vector<int>().swap(arr);

どういうことかといいますと一時的に領域と今保持しているarrとをスワップします。
すると一時的な領域から出た瞬間にデストラクタが呼ばれます(この説明あってるかな)。

このような方法により、vectorを開放することができます。

てかvectorの解放ってこんなにめんどくさかったのか…orz