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

标签 c++ stl vector

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

然后我再次相信使用动态大小的数组比静态数组更有效,这样内存只会在需要时分配。它还会简化我的程序的设计过程。有没有办法有效地实现这一点?

感谢您的任何建议!

最佳答案

您担心的答案可能是 std::deque。它为您提供了与 std::vector 类似的接口(interface),但在碎片化内存中效果更好,因为它分配了几个小数组而不是一个大数组。它实际上在某些方面不如 std::vector 有效,但对于您的情况,这可能是一个很好的权衡。

关于c++ - 我应该担心 std::vector 的内存碎片吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7955794/

相关文章:

c++ - C++ 中的有序容器与无序容器

c++ - STL 算法和并发编程

c - AVX - 将 __256 vector 存储回 C 中的内存 (void**),

swift - 在 swift SceneKit 中绘制带有顶点的自定义节点的示例是什么?

c++ - 指针、数组和结构(以及分配内存)?

c++ - C++17 标准会包含 "std::byte"吗?

c++ - 返回 char* 出错,打印好,返回不好(c++)

具有 2 个线程的 C++ 队列

algorithm - std::partial_sum 和 Kahan 算法

c++ - 模板化类是否继承传递给它们的类的成员? (特别是 std::vector)