栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

map的内存释放

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

map的内存释放

map在erase和clear后是否会马上释放内存

参考链接:关于c++中map的内存占用问题
  (原文)原文提到map在erase和clear后不会立马释放内存,而是采用类似内存池的机制,对申请的内存进行”预留“,在一段时间内不使用才会予以“释放”。
  (在编译器MSVC1930的实际测试中)大内存空间在erase和clear后会立马释放
  (猜测)小内存空间在erase和clear后会被内存池回收


delete+erase:编译器MSVC1930,erase之后内存连续下降没有间断,个人猜测是和allocate的内存池分配方式有关,在erase大内存时不应该存在“预留”机制,因为这可能影响其他大内存应用的内存申请;而erase小内存则应该采用“预留”机制,因为小内存的频繁释放与申请会占用过多的cpu资源,而且容易造成内存碎片。

delete+clear:编译器MSVC1930,如果需要删除map分配的全部空间,clear显然比逐个erase来得更快。

delete:缺少clear或erase,内存泄露

clear:缺少delete,内存泄露

erase:缺少delete,内存泄露

map中stl容器是否需要手动释放内存

参考链接:map的内存释放
   (原文)map在释放内存空间时,如果有vector之类的非基本数据类型,需要进行内存空间的释放,原文中使用swap进行内存空间释放的思想同样值得学习
  (在编译器MSVC1930的实际测试中)vector在栈中申请内存,所以在实际释放内存时不需要再单独vector.clear了


swap+erase

clear+erase

swap+clear

clear+clear

erase

clear

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/867696.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号