【发布时间】:2016-04-07 07:50:45
【问题描述】:
我知道如果vector需要更多内存,它会分配新的,而somethimes会重新分配他的元素。我有一个问题。有什么方法可以准确检查 vector 何时分配新内存,以及(更重要的是)他会分配多少?
我想分配将在没有更多内存时开始,这就是我对重新分配更感兴趣的原因。
【问题讨论】:
标签: c++ memory memory-management vector
我知道如果vector需要更多内存,它会分配新的,而somethimes会重新分配他的元素。我有一个问题。有什么方法可以准确检查 vector 何时分配新内存,以及(更重要的是)他会分配多少?
我想分配将在没有更多内存时开始,这就是我对重新分配更感兴趣的原因。
【问题讨论】:
标签: c++ memory memory-management vector
当一个新项目被添加到 std::vector 并且它的 capacity 等于它的 size 然后它会分配新的内存块并将它持有的所有项目移动到新分配的内存(使用微软编译器,如果我没记错的话,它将分配 1.5 个当前容量的空间)并添加新的。之前的内存当然会被释放
【讨论】:
分配策略是implementation-defined。您可以使用 custom allocator 或使用内存分析器工具(例如 valgrind 或 Visual Studio)来跟踪内存分配。
【讨论】: