可能的重复:
减少stl向量的容量
这是std :: vector的正常行为吗?
我知道当你调用vector.clear()时,std :: vectors不会"释放"内存,但我怎么能这样做呢?一旦我清除它,我希望它释放所有资源,但我不想破坏它.
这是现在正在发生的事情.我有一个名为OGLSHAPE的类,我将它们推送到它们的向量中.我曾希望,一旦我做了shapevec.clear(),我就会得到所有的记忆,但只有3/4的回复.我不是100%确定这是否是内存泄漏,所以我想释放所有资源,以确保它不是泄漏.谢谢
小智 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 );
}
Run Code Online (Sandbox Code Playgroud)