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

时间:2016-04-07 07:50:45

标签: c++ memory memory-management vector

我知道如果vector需要更多内存,它会分配new,而somethimes会重新分配他的元素。我有一个问题。有没有办法确切地检查向量是否会分配新的内存,并且(更重要的是)他将分配多少?

我猜分配将在没有剩余内存的情况下开始,这就是为什么我对重新分配更感兴趣。

2 个答案:

答案 0 :(得分:0)

当一个新项目被添加到 std :: vector<> 并且容量等于它的大小时,它将分配新的内存块并将它保存的所有项目移动到新分配的内存中(使用Microsoft编译器,它将分配1.5个当前容量的空间,如果我没有太多错误的话)并添加新内存。先前的记忆将被解除分配

答案 1 :(得分:0)

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