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内存释 ...
随机推荐
- win7查看其它工作组 win7 所有工作组
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha win7 所有工作组 ==== win7 网络 工作组 查找 自身有问题. 多刷新几 ...
- LOJ.6062.[2017山东一轮集训]Pair(Hall定理 线段树)
题目链接 首先Bi之间的大小关系没用,先对它排序,假设从小到大排 那么每个Ai所能匹配的Bi就是一个B[]的后缀 把一个B[]后缀的匹配看做一条边的覆盖,设Xi为Bi被覆盖的次数 容易想到 对于每个i ...
- HDU.5909.Tree Cutting(树形DP FWT/点分治)
题目链接 \(Description\) 给定一棵树,每个点有权值,在\([0,m-1]\)之间.求异或和为\(0,1,...,m-1\)的非空连通块各有多少个. \(n\leq 1000,m\leq ...
- 并查集 (Union-Find Sets)及其应用
定义 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.常常在使用中以森林来表示. 集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的 ...
- 动态ip、静态ip、pppoe拨号的区别
pppoe拨号 pppoe拨号上网,又叫做ADSL拨号上网.宽带拨号上网.指现在有很多我的E家用户,送的无线猫,阉割了PPPOE拨号功能,必须要从电脑上拨号才能上网.还有大街上的WIFI热点也很多,如 ...
- Oracle EBS 12.2.6 on VirtualBox
Back in May, Oracle announced the general availability of Oracle VM Virtual Appliance for E-Business ...
- Deploying JAR Package & JSP Page in EBS R12.2.4 WLS
https://pan.baidu.com/s/1OomyeLdbGWxTtCKVcweo0w # Uninstall JAR JSP QRCODE 1.# 查找QRCODE相关文件位置 [root@ ...
- AVL树平衡旋转详解
AVL树平衡旋转详解 概述 AVL树又叫做平衡二叉树.前言部分我也有说到,AVL树的前提是二叉排序树(BST或叫做二叉查找树).由于在生成BST树的过程中可能会出现线型树结构,比如插入的顺序是:1, ...
- Python报错:ImportError: No module named src.data_layer
ImportError: No module named src.data_layer 解决方案: export PYTHONPATH=path/to/modules
- 六、Springboot 之 多配置文件
说明:在程序开发过程中可能会有这样的需求:开发和部署的配置信息可能会不同,以传统的方式就是在配置文件里面写好配置,在部署的时候再去修改这些配置,这样肯定会有很多问题,比如忘记修改.修改错误等. 而Sp ...