强制std :: vector释放内存?

时间:2010-07-03 19:15:09

标签: c++ vector

  

可能重复:
  reduce the capacity of an stl vector
  Is this normal behavior for a std::vector?

我知道当你调用vector.clear()时,std :: vectors不会“释放”内存,但我怎么能这样做呢?一旦我清除它,我希望它释放所有资源,但我不想破坏它。

现在正在发生的事情。 我有一个名为OGLSHAPE的类,我将它们推送到它们的向量中。我曾希望,一旦我做了shapevec.clear(),我就会得到所有的记忆,但只有3/4的回复。我不是100%确定这是否是内存泄漏,所以我想释放所有资源,以确保它不是泄漏。感谢

2 个答案:

答案 0 :(得分:14)

使用交换技巧:

#include <vector>

template <typename T>
void FreeAll( T & t ) {
    T tmp;
    t.swap( tmp );
}

int main() {
    std::vector <int> v;
    v.push_back( 1 );
    FreeAll( v );
}

答案 1 :(得分:1)

考虑使用交换技巧:

矢量(形状).swap(形状);