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内存释 ...
随机推荐
- 安卓工作室Android Studio 快捷键
安卓工作室Android Studio 快捷键 Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O ...
- 3d模型 手办制作 3d model manual production
3d模型 手办制作 3d model manual production 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313 ...
- hdu4035 Maze
题目链接 hdu4035 Maze 题解 f[u]表示在节点u通关的所需的边数期望 转移方程分叶子节点和非叶子点讨论 发现都可以化成f[x]=af[1]+bf[dad]+c的形式 然后推一下系数 还是 ...
- Python3Numpy——相关性协方差应用
基本理论 Correlation Are there correlations between variables? Correlation measures the strength of the ...
- php 获取URL
#测试网址: http://localhost/blog/testurl.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br> ...
- 数据结构C语言版--静态顺序表的基本功能实现(一)
/* * 功能:创建一个线性表,并输出 * 静态分配内存 */ #include<stdio.h> //stdio.h是C的标准I/O库 //#include<iostream> ...
- IO流(1)—之序列化与反序列化
1.概念 序列化:把Java对象转换为字节序列的过程称为对象的序列化 反序列化:把字节序列恢复为Java对象的过程称为对象的反序列化 注:只有实现了Serializable和Externalizabl ...
- spring cloud:Edgware.RELEASE版本hystrix超时新坑
升级到Edgware.RELEASE发现,zuul中不管如何设置hystrix的超时时间均不起作用,仍然是默认的1000ms. 降回低版本后正常,但是低版本的fallback方法中,又拿不到详细异常 ...
- C#中使用 SendMessage 向非顶端窗体发送组合键
开门见山,不废话了, 直接举例说明一下: 比如发送ALT + F 以下是 用spy++截取的消息内容 <00001> 000310DC P WM_SYSKEYDOWN nVirtKey:V ...
- JPA查询单个字段和多个字段返回类型总结
原文地址:https://blog.csdn.net/weixin_40326509/article/details/80865646 在使用springboot中,需要使用JPQL和SQL去查询记录 ...