std::vector- 他将分配多少内存(在重新分配期间)

Posted

技术标签:

【中文标题】std::vector- 他将分配多少内存(在重新分配期间)【英文标题】:std::vector- how much memory will he allocate (during reallocation) 【发布时间】:2016-04-07 07:50:45 【问题描述】:

我知道如果vector需要更多内存,它会分配新的,而somethimes会重新分配他的元素。我有一个问题。有什么方法可以准确检查 vector 何时分配新内存,以及(更重要的是)他会分配多少?

我想分配将在没有更多内存时开始,这就是我对重新分配更感兴趣的原因。

【问题讨论】:

【参考方案1】:

当一个新项目被添加到 std::vector 并且它的 capacity 等于它的 size 然后它会分配新的内存块并将它持有的所有项目移动到新分配的内存(使用微软编译器,如果我没记错的话,它将分配 1.5 个当前容量的空间)并添加新的。之前的内存当然会被释放

【讨论】:

【参考方案2】:

分配策略是implementation-defined。您可以使用 custom allocator 或使用内存分析器工具(例如 valgrind 或 Visual Studio)来跟踪内存分配。

【讨论】:

以上是关于std::vector- 他将分配多少内存(在重新分配期间)的主要内容,如果未能解决你的问题,请参考以下文章

std::string,std::vector,std::accumulate注意事项

C++ 动态分配的 std::vector

声明变量以保存字符串列表时的内存分配

模仿std::vector写线性表的几点感想

std::vector 保留和调整 NUMA 局部性

C++ STD 容器:std::vector - 有没有办法清除向量并保留存储分配?