为了账号安全,请及时绑定邮箱和手机立即绑定

之后我如何做 ?才能让程序占用内存和在这段循环之前的一样多呢?

之后我如何做 ?才能让程序占用内存和在这段循环之前的一样多呢?

凤凰求蛊 2022-05-26 19:15:02
main(){vector<double>it;double a[100000];for(int i=0;i<100000;i++){a[i]=i;}for(int i=0;i<100000;i++){it.push_back(a[i]);}return 0;}在 for(int i=0;i<100000;i++){it.push_back(a[i]);}
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

it.clear();
把里面的元素删掉,内存就还回去了
如果你是想把数组的内存还回去,你开始的时候就
double* a = new double[100000];
然后delete a[];

查看完整回答
反对 回复 2022-05-30
?
拉风的咖菲猫

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



查看完整回答
反对 回复 2022-05-30
  • 2 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信