我知道如果vector需要更多内存,它会分配new,而somethimes会重新分配他的元素。我有一个问题。有没有办法确切地检查向量是否会分配新的内存,并且(更重要的是)他将分配多少?
我猜分配将在没有剩余内存的情况下开始,这就是为什么我对重新分配更感兴趣。
答案 0 :(得分:0)
当一个新项目被添加到 std :: vector<> 并且容量等于它的大小时,它将分配新的内存块并将它保存的所有项目移动到新分配的内存中(使用Microsoft编译器,它将分配1.5个当前容量的空间,如果我没有太多错误的话)并添加新内存。先前的记忆将被解除分配
答案 1 :(得分:0)
分配策略为implementation-defined。您可以使用custom allocator或内存分析器工具(如valgrind或Visual Studio)跟踪内存分配。