vector、map 内存释放
一、vector
void TestVector()
{
cout << "begin create vector" << endl;
int iSize = 10000000;
vector<int> test_vec;
for (int i = 0; i < iSize; i++)
{
test_vec.push_back(i);
}
cout << "create vector end" << endl; Sleep(2*1000);
cout << "clear vector" << endl;
test_vec.clear();
cout << "clear vector end" << endl; Sleep(1*1000); cout << "after clear new data come if the size bigger" << endl;
for (int i = 0; i < iSize; i++)
{
test_vec.push_back(i);
}
cout << "new data push_back end" << endl; Sleep(1*1000); cout << "swap vector" << endl; {
vector<int> tmp_vec;
test_vec.swap(tmp_vec);
}
cout << "swap vector end" << endl; Sleep(1*1000);
}
测试过程:










结论:
1. vector clear 之后,内存没有释放,但在下次分配时会复用该块内存。
2. vector swap 空数据之后,会释放内存。
二、map
void TestMap()
{
cout << "begin create map" << endl;
int iSize = 1000000;
map<int, int> test_map;
for (int i = 0; i < iSize; i++)
{
test_map[i] = i;
}
cout << "create map end" << endl; Sleep(2*1000); cout << "clear map" << endl;
test_map.clear();
cout << "clear map end" << endl; getchar(); cout << "swap map" << endl; {
map<int, int> tmp_map;
test_map.swap(tmp_map);
}
cout << "swap map end" << endl;
getchar();
}
测试过程:







结论:
1. map clear 之后,会释放内存。
2. map swap 空数据之后,会释放内存。
vector、map 内存释放的更多相关文章
- 关于vector的内存释放问题
以前一直想当然的以为vector 的clear()函数会保证释放vector的内存,今天网上一查资料发现完全不是我想象的那样子. 比如有如下代码: tempObject obj1; tempObjec ...
- vector的内存释放
转自:http://www.cnblogs.com/summerRQ/articles/2407974.html vector : C++ STL中的顺序容器,封装数组 1. vector容器的内存自 ...
- [C++]STL容器Vector的内存释放
直接抛出两句话,说明到底应该如何释放Vector占用的内存. “vector的clear不影响capacity,你应该swap一个空的vector.” <Effective STL>中的“ ...
- c++ vector的内存释放
c++中vector的一个特点是: 内存空间只会增长,不会减小.即为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都挨着前一个元素存储.设想,如果每次vector添加一个新元素 ...
- std::vector的内存释放
先上一段代码 using namespace std; class A{ public: ~A(){ cout << "deconstruct"; }; }; #inc ...
- CPP-STL:vector的内存释放
1. vector容器的内存自增长 与其他容器不同,其内存空间只会增长,不会减小.先来看看"C++ Primer"中怎么说:为了支持快速的随机访问,vector容器的元素以连续方式 ...
- vector 内存释放相关
在使用vector 存储char 类型时 new的数据 在vecto 执行rerase的时候或者 单项执行clear 内存是不能被释放的. 比如有下面的一个测试: class SnapshotInfo ...
- (转)C++ STL中的vector的内存分配与释放
C++ STL中的vector的内存分配与释放http://www.cnblogs.com/biyeymyhjob/archive/2012/09/12/2674004.html 1.vector的内 ...
- STL 内存释放
C++ STL 中的map,vector等内存释放问题是一个很令开发者头痛的问题,关于 stl内部的内存是自己内部实现的allocator,关于其内部的内存管理本文不做介绍,只是 介绍一下STL内存释 ...
随机推荐
- html 音乐 QQ播放器 外链 代码 播放器 外链 代码
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha QQ播放器 外链 代码 播放器 外链 代码 ======== 歌曲链接 QQ播放器 外链 ...
- BZOJ.5120.[清华集训2017]无限之环(费用流zkw 黑白染色)
题目链接 LOJ 洛谷 容易想到最小费用最大流分配度数. 因为水管形态固定,每个点还是要拆成4个点,分别当前格子表示向上右下左方向. 然后能比较容易地得到每种状态向其它状态转移的费用(比如原向上的可以 ...
- HDU.3032.Nim or not Nim?(博弈论 Lasker's Nim)
题目链接 \(Description\) 有多堆石子, 每次可以将任意一堆拿走任意个或者将这一堆分成非空的两堆, 拿走最后一颗石子的人胜利.问谁会获得胜利. \(Solution\) Lasker's ...
- 在Editplus直接运行程序的步骤
https://www.cnblogs.com/myitroad/p/4841875.html
- Syntax error , insert “EnumBody” to complete EnumDeclaration
当@Test写在方法前面的时候因为没有导入junit的jar包,如果已经导入架包依然是同样的错误,那就是方法没写对,或者还没有写方法
- springmvc框架javax.servlet.http.HttpServletResponse出现小红叉
需要在项目点右键配置属性--->Library--->server runtime--->但是配置不能成功,原因是没有在windows下配置过runtime environment, ...
- window + php + memcached 安装
第一步:安装windows版memcached 下载地址:http://download.csdn.net/detail/zhaotengfei36520/8182503#comment 下载之后将文 ...
- 数据结构C语言版--动态顺序表的基本功能实现(二)
/* * 若各个方法结构体变量参数为: &L(即地址符加变量)则结构体变量访问结构成员变量时使用"." * 若为:*L(即取地址符加变量)则结构体变量访问结构体成员变量使用 ...
- Mysql InnoDB 数据更新导致锁表
一.数据表结构 CREATE TABLE `jx_attach` ( `attach_id` int(11) NOT NULL AUTO_INCREMENT, `feed_id` int(11) DE ...
- apache2.4多站点配置
原来是跑单站,现在想跑多站,配置不算复杂,记录一下: 用默认的httpd.conf修改,去掉两个vhost的注释 servername指定任意一个合法的域名 如果是python,配置wsgi 修改ex ...