我应该担心 std::vector 的内存碎片吗?

2024-01-10

我应该担心 std::vector 的内存碎片吗?如果是这样,有什么方法可以帮助预防吗?我并不总是预测我的程序会在 PC 上运行,它们也可能会在嵌入式设备/游戏控制台上运行,因此我并不总是能够依赖虚拟内存。

然后,我再次相信使用动态大小的数组而不是静态数组会更有效,因此只有在需要时才会分配内存。它还会简化我的程序的设计过程。有没有办法可以有效地实现这一目标?

感谢您的任何建议!


您担心的答案可能是std::deque。它为您提供了与以下类似的界面std::vector,但对于碎片内存效果更好,因为它分配几个小数组而不是一个大数组。实际上效率低于std::vector在某些方面,但对于您的情况来说,这可能是一个很好的权衡。

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

我应该担心 std::vector 的内存碎片吗? 的相关文章

  • 进程何时获得 SIGABRT(信号 6)?

    C 中进程获得 SIGABRT 的场景有哪些 该信号是否始终来自进程内部 或者该信号可以从一个进程发送到另一个进程吗 有没有办法识别哪个进程正在发送该信号 abort 向调用进程发送SIGABRT信号 就是这样abort 基本上有效 abo
  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 如何将“外部模板”与由同一类中的模板化成员使用的嵌套类一起使用?

    首先 一些背景信息 我尝试以 Herb Sutter 在他的解决方案中介绍的方式使用 Pimpl 习语 得到了 101 http herbsutter com gotw 101 这在头文件中看起来像这样 include pimpl h h
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 当模板类不包含可用的成员函数时,如何在编译时验证模板参数?

    我有以下模板struct template
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop

随机推荐

  • python模拟函数未调用

    我正在测试 python 代码 一个 django 3 0 5 项目 尽管我认为它不相关 但我无法调用我的模拟对象的函数 这是我的代码 myproject mypackage myhelpers def get dict return di
  • 当变量等于x时触发事件 - python

    我有以下脚本 每次按下按钮时都会增加计数器 当计数器达到某个数字 即 10 时 可以说我想要触发一个事件 from RPi import GPIO from time import sleep clk 25 dt 8 GPIO setmod
  • 无法从 RecyclerView.OnScrollListener 调用 notificationItemInserted()

    最近我升级了我的recyclerview v7 23 to recyclerview v7 24 2 0 我的应用程序有一个无限滚动列表 错误消息指向该行notifyItemInserted当我将加载视图添加到RecyclerView 空对
  • 将数据追加到 localStorage 对象

    我正在尝试将新对象添加到当前的 localStorage 对象 但没有成功 最后 我得到的不是 localStorage 中的两组数据 而是最后一组数据 对我做错了什么有任何见解吗 谢谢 这就是我想做的 add the first stud
  • Electron - node.js - ng :无法加载文件路径\ng.ps1,因为在此系统上禁用了运行脚本

    我正在尝试编译一个项目Windows 10 in Visual Studio Code 我的设置如下 1 npm版本6 12 2 Node js版本12 13 3 Angular CLI 8 3 19 我遇到的问题是当我尝试运行时ng se
  • Spring MVC 覆盖接收到的内容类型

    我正在开发 Spring MVC 应用程序 并且有一个我无法控制的客户端 该客户端正在 POST JSON 数据 但传输application x www form urlencoded标头 Spring 自然信任此标头并尝试接收数据 但由
  • AMD:javascript 上下文的目的是什么?

    关于AMD 异步模块定义 我读到的阶段是这样的 AMD 格式来自于想要一种比 今天的 编写一堆带有隐式依赖关系的脚本标签 你必须手动订购 和一些易于使用的东西 直接在浏览器中 javascript 上下文的目的是什么 你能举个例子吗 使用
  • SQLiteDiskIOException:创建数据库时磁盘 I/O 错误

    我正在使用以下代码在 android 中创建数据库 public class PackageDBHelper extends SQLiteOpenHelper The Android s default system path of you
  • 向 li 元素添加自动增量值

    我是一名 css 设计师 所以请原谅我不了解任何 js 基本上我想知道如何使用 javascript jquery 将自动增量 id 添加到列表项中 以获取我试图添加一些 css 的内容 before li a href Item numb
  • 从 C# 对象动态构建 SQL WHERE 子句 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 HTTP POST 请求在与 asp net Web API 绑定的 HTML 表中创建过
  • 原则 2:错误:类“..\..”没有名为“...”的字段或关联

    在搜索时 我发现了许多有类似问题的人的结果 但它们总是与关联错误有关 我正在尝试将一个简单的文本字段添加到数据库中的表中 但在我的一生中 我无法弄清楚这次有什么不同 当我以前多次这样做时没有出现任何问题 我已将 record checksu
  • 形成相同 AVL 和展开树的序列?

    是否存在这样一个数字序列 1 7 使用所有数字 每个数字仅一次 可以形成相等的 AVL 和展开树 好吧 出于科学的兴趣 我根据各自的维基百科文章在 Python 中实现了 AVL 和展开树 假设我没有在某个地方犯错误 我的发现是不存在产生相
  • 内存使用率高 - 应用程序响应缓慢:已用内存值没有减少 + 可用内存值没有增加

    当应用程序使用几分钟后 它会慢慢增加Used记忆值和减少Free记忆值 几分钟后应用程序变得非常慢 为什么不释放内存 系统配置 CPU Intel R Xeon R Platinum 8175M CPU 2 50GHz 处理器数量 4 CP
  • 指向对象开头的指针 (C++)

    我需要一种方法来获取指向 C 中对象开头的指针 该对象在模板内部使用 因此它可以是任何类型 多态或非多态 并且可能是使用多重继承的对象 I found 本文 http accu org index php journals 450它描述了一
  • 使用 Catalyst 移植到 Mac 时排除 pod

    将应用程序移植到 Mac 终于成为可能 这要归功于Catalyst问题是 许多 pod 不支持 AppKit 最常见的是 Crashlytics Firebase In Pods Crashlytics iOS Crashlytics fr
  • 在 Db2 中处理 BOOLEAN 值的最佳方法是什么?

    Database Db2 Scenario 我有一个专栏需要是真还是假 我找到了两个资源来说明如何实现这一目标 但是 当我将它们放在一起时 我收到错误 布尔值 https www ibm com support knowledgecente
  • 如何从ganglia的数据库中获取数据

    我想使用 ganglia 的数据来分析我们的集群 但我不知道 ganglia 的数据库在哪里 以前有人这样做过吗 gmetad 上存储指标数据的是rrd 文件 通常默认路径是 var lib ganglia rrds
  • 中使用 readonly 属性而不改变光标

    如果我有一个
  • HttpWebRequest排队库,保证请求交付

    只是想知道是否存在框架类来处理请求排队 发送请求时 应将其添加到队列中 如果出现问题 没有互联网 则应存储请求 并稍后尝试再次发送 同时 可以创建更多请求 如果仍然没有网络 则所有新请求都应存储在队列中 并在网络恢复时再次发送 打算实现相同
  • 我应该担心 std::vector 的内存碎片吗?

    我应该担心 std vector 的内存碎片吗 如果是这样 有什么方法可以帮助预防吗 我并不总是预测我的程序会在 PC 上运行 它们也可能会在嵌入式设备 游戏控制台上运行 因此我并不总是能够依赖虚拟内存 然后 我再次相信使用动态大小的数组而