可能重复:
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%确定这是否是内存泄漏,所以我想释放所有资源,以确保它不是泄漏。感谢
答案 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(形状);