如果 std::map 被清除,是否确保内存被释放

2024-03-30

If a std::vector vec被清除vec.clear()分配的内存不得立即释放。这size向量的值将为零,但capacity将/可以不变。

这是一种非常有益的行为,因为可以清除一个大向量并为其分配新值,而不需要昂贵的内存解除/分配。内存碎片整理也会减少。

人们可以强制执行这一点vec.shrink_to_fit() 缩小以适合 https://en.cppreference.com/w/cpp/container/vector/shrink_to_fit.

std::map has a clear有功能,但是没有shrink_to_fit。存储地图所需的内存会发生什么变化clear?

cppreference.com 指出地图.clear() https://en.cppreference.com/w/cpp/container/map/clear删除容器中的所有元素。调用此函数后,size() 返回零。


可以使用 vec.shrink_to_fit()shrink_to_fit 强制执行这一点。

实际上,shrink_to_fitenforce内存的重新分配。它只是允许它。允许实现不释放。

如果 std::map 被清除,是否确保内存被释放

不会。保证标准容器释放内存的唯一情况是它们被销毁时。

Map没有vector所具有的容量概念,因此它不需要shrink_to_fit。清除后的映射与清除+shrink_to_fit后的向量处于相同的情况:它不需要分配任何内存......但也不禁止分配它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果 std::map 被清除,是否确保内存被释放 的相关文章

随机推荐

  • GPS 坐标(以度为单位)来计算距离

    在iPhone上 我以十进制度数获取用户的位置 例如 纬度39 470920和经度 0 373192 也就是A点 我需要用另一个 GPS 坐标 同样以十进制表示 B 点创建一条线 然后 计算从 A 到 B 的线与另一个点 C 之间的距离 垂
  • 如何编译jade模板文件来获取字符串?

    我的玉模板文件中有一个视图逻辑 如何将模型传递给j ade并获取html以通过电子邮件进一步发送 您可以尝试以下操作 var jade require jade fs require fs fs readFile template jade
  • 在 UIImageView 之上绘图以使图像透明

    我正在开发一个 iPhone 应用程序 其中当用户在图像上移动手指时 我需要通过将其 alpha 级别设置为 0 来使图像的一部分透明 基本上 如果您碰巧知道应用程序商店应用程序 iSteam 用户应该能够在顶部图像上移动手指 这将使背景图
  • Select2 多重选择 - 以编程方式取消选择/取消选择项目

    我有一个 select2 列表和一组外部按钮 我想单击外部按钮并取消选择 select2 列表中的相应项目 我知道我可以使用命令从外部值进行项目选择 external btn click function select2 val CA tr
  • 如何使用DexClassLoader从aar文件动态加载类

    我已经成功地通过以下方式从 dex 文件动态加载类 enter code here File file getDir dex 0 DexClassLoader dexClassLoader new DexClassLoader data d
  • Jenkins 声明性管道:如何重命名“声明性:后操作”步骤?

    我有一个声明式管道 如下所示 pipeline stages post success failure 它导致最后一步的创建 称为 声明性 后置操作 Q 如何重命名 声明性 操作后 步骤 我想要一个有意义的名称 例如 发送电子邮件通知 UP
  • UIButton 上的 iOS NSAttributedString

    我在用着iOS 6 所以属性字符串应该很容易使用 对吗 嗯 没那么多 我想做的事 使用自定义子类UIButton 它没有做任何定制的事情titleLabel 我想要一个多行属性标题 即 第一行全部大写 我意识到这不是属性的一部分 Bolde
  • git diff - 仅显示远程上的新内容

    我在 github 上有一个本地存储库和一个远程存储库 由于商业原因 它们不同步 我已经在我保留的本地上做了很多工作 现在我手动将远程的所有新内容添加到我的本地 没有分支机构 当我使用该命令时 git diff color master o
  • 向 JsonOutputFormatter 构造函数提供 ArrayPool 对象

    从 net RC2 升级到 RTM 后 我发现我需要向派生自 ArrayPool 的 JsonOutputFormatter 构造函数提供一个参数 我如何获得这个对象 我手动新建 JsonOutputFormatter 因为我需要配置 Re
  • Quartz API 和 Joda Time API 之间有什么关系吗?

    是否可以在 JodaTime 中创建一个日期 然后让 Quartz 使用 JodaTime 对象安排作业 我们可以给 Quartz API 一个Period jodaPeriod 以便在一天中的特定时间段内运行任务吗 这两个 API 是否相
  • C++ char 数组输入 - 解释

    我有一个练习 编写一个程序 接收一个句子 然后从每个单词中取出第一个字母并创建一个新单词 我的代码 int main char str new char 50 for int i 0 i lt 50 i str i NULL cin gt
  • 预提交钩子文件暂存以进行提交

    如果您在 Git 中有一个用于创建 或修改 文件的预提交挂钩 那么该文件是否需要暂存才能提交 例如 如果我有一个预提交挂钩来创建某些代码的缩小版本 我是否需要git add那个缩小版本可以包含在提交中吗 是的 您必须自己将文件添加到索引中
  • 是否可以通过 Pip 安装部分 Python 包?

    我有一个被许多项目使用的内部实用程序库 从实用程序库中提取的代码中的项目之间有相当多的重叠 但随着库的增长 任何单个项目获得的不会使用的额外内容也会增加 如果该库仅包含 python 那么这不会成为问题 但该库也捆绑在二进制文件中 Exam
  • 一行中两个等号?

    有人可以解释一下这是做什么的以及它如何是合法的 C 代码吗 我在这段代码中找到了这一行 http code google com p compression code downloads list http code google com
  • 如何在一台服务器上部署nodejs api和vuejs应用程序

    我开发了 Node Rest api 和 vuejs Web 应用程序 我正在尝试将这两个项目部署到一台运行 ubuntu 的 aws 服务器上 两个应用程序都有不同的端口 我尝试为 api 配置 api example com 为 vue
  • XML-RPC 方法可以在 Python 中按名称(作为字符串)调用吗?

    在 python 中 调用 XML RPC 方法涉及调用代理对象上的方法 from xmlrpclib import ServerProxy print ServerProxy https example com rpc api hello
  • 隐藏的 YouTube 播放器失去了方法

    我正在使用 javascript 控制嵌入式 youtube chromeless 播放器 并且我想偶尔通过设置 display none 来隐藏它 然而 当我再次向播放器展示时 它失去了 YouTube 方法 例如
  • .NET MVC3 Razor (VB!) 扩展未在视图中导入?

    我的扩展未导入到我的 vbhtml 视图中 我似乎在某个地方遗漏了一些东西 有人可以帮忙吗 模块 vb Imports System Runtime CompilerServices Namespace Areas Admin Models
  • Arel、联接和 Rails 查询

    我最近被一个问题困扰了一段时间 并找到了 Arel 的方法 它看起来应该允许我在查询中执行 OR 操作 作为起点 我需要将现有的 Rails 3 查询转换为 Arel 这就是我遇到问题的地方 以下范围和查询按我的预期工作 它向我提供与特定用
  • 如果 std::map 被清除,是否确保内存被释放

    If a std vector vec被清除vec clear 分配的内存不得立即释放 这size向量的值将为零 但capacity将 可以不变 这是一种非常有益的行为 因为可以清除一个大向量并为其分配新值 而不需要昂贵的内存解除 分配 内