【发布时间】:2012-03-06 13:46:07
【问题描述】:
当我使用“擦除”删除向量中的元素时,不会清除内存。例如,我制作了一个大小为 2000 的向量。创建后,程序使用 1.5 MB 内存。当我进行擦除调用时,什么都不会被清除。所有的元素都消失了。但它们仍在记忆中。
例如:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
//Makes a vector of 2000 items
vector<int> test(200000);
//Pause for test purpose
system("pause");
//erase all elements
test.erase(test.begin(),test.end());
//Pause for test purpose
system("pause");
return false;
}
Size 返回 0。但该进程仍使用 1.5MB 内存。
【问题讨论】:
-
你如何测量进程正在使用的内存?
-
也许你应该阅读这个:stackoverflow.com/questions/586634/shrinking-a-vector希望它有所帮助。
标签: c++ windows memory vector erase