强制std :: vector释放内存?

jma*_*erx 12 c++ vector

可能的重复:
减少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)

  • @Neil:是的,我的措辞不好,我想问一下是否有_technical_原因.无论如何,谢谢你的回答.我可能已经被_C Terseness Virus_毒害了,但实际上我更喜欢`std :: vector <T>().swap(v)`. (3认同)