gpt4 book ai didi

c++ - 多次分配内存是否一次需要更多时间?

转载 作者:搜寻专家 更新时间:2023-10-31 01:28:53 25 4
gpt4 key购买 nike

众所周知,序列容器(列表除外)的容量是在 push_back 到其 capacity 等于其 的容器之后实现定义的尺寸?

而且大多数编译器会保留更多的内存,而不是仅仅分配一个大小并保持容量等于大小。

所以我认为多次分配会花费更多时间。但是除了检查bad_alloc,还有其他原因吗?

最佳答案

我们以std::vector 为例。如果每次需要更多内存时只分配少量内存,则会出现两个主要问题:

  1. 分配后通常会复制容器中的值。如果有大量数据,或者值类型具有昂贵的复制(或移动)构造函数,这可能会很昂贵。

  2. 小分配可能会增加堆碎片,并且肯定会增加堆簿记开销。除了可变成本(与分配大小成比例)之外,每个分配都有固定成本。

关于c++ - 多次分配内存是否一次需要更多时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51007244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com