C++ 强制std::vector释放其内存?

C++ 强制std::vector释放其内存?,c++,vector,C++,Vector,可能的重复项: 我知道在调用vector.clear()时,std::vector不会“释放”内存,但我该怎么做呢?我希望它在我清除后释放所有资源,但我不想破坏它 以下是目前正在发生的事情。 我有一个叫做OGLSHAPE的类,我把它们推到一个向量中。我希望一旦我做了shapevec.clear()我能找回我所有的记忆,但只找回了三分之四。我不能100%确定这是否是内存泄漏,因此我想释放所有资源以确保它不是泄漏。谢谢使用交换技巧: #include <vector> templa

可能的重复项:

我知道在调用vector.clear()时,std::vector不会“释放”内存,但我该怎么做呢?我希望它在我清除后释放所有资源,但我不想破坏它

以下是目前正在发生的事情。 我有一个叫做OGLSHAPE的类,我把它们推到一个向量中。我希望一旦我做了shapevec.clear()我能找回我所有的记忆,但只找回了三分之四。我不能100%确定这是否是内存泄漏,因此我想释放所有资源以确保它不是泄漏。谢谢

使用交换技巧:

#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 );
}
std::vector<Shape>().swap(shapes);
#包括
模板
无效自由球(T&T){
T-tmp;
t、 掉期(tmp);
}
int main(){
std::向量v;
v、 推回(1);
弗里尔(v);
}

考虑使用交换技巧:

#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 );
}
std::vector<Shape>().swap(shapes);
std::vector().swap(形状);

Neil,你有没有什么理由要买
tmp
,或者这只是一个风格和个人喜好的问题?@sbi都是:-)而且我觉得更清楚。@Neil:是的,我的措辞不好,我想问是否有技术原因。无论如何,谢谢你的回答。我可能被C简洁病毒毒死了,但实际上我更喜欢
std::vector().swap(v)