2 回答
TA贡献1852条经验 获得超7个赞
it.clear();
把里面的元素删掉,内存就还回去了
如果你是想把数组的内存还回去,你开始的时候就
double* a = new double[100000];
然后delete a[];
TA贡献1995条经验 获得超2个赞
光clear是不释放内存的,将你这段代码修改了一下,你看看,应该能明白了,不明白运行一下就知道了。
#include <vector>
#include <iostream>
using namespace std;
main()
{
vector<double>it;
double a[100000];
for(int i=0;i<100000;i++)
{
a[i]=i;
}
cout << "未放元素时容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //未放元素
for(int i=0;i<100000;i++)
{
it.push_back(a[i]);
}
cout << "放元素后容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //放元素
it.clear();
cout << "clear后容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //clear
vector<double>().swap(it);
cout << "swap后容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //swap
return 0;
}
运行结果:
未放元素时容器大小为: 0容器容量为: 0
放元素后容器大小为: 100000容器容量为: 131072
clear后容器大小为: 0容器容量为: 131072
swap后容器大小为: 0容器容量为: 0
添加回答
举报