2017-05-09 76 views
0

缩小以适合---这可能会导致重新分配,但对矢量大小没有影响,并且不能更改其元素。shink_to_fit是否会导致重新分配?

在我看来,容量()总是比尺寸更大的(),我们可以使用所以从来不需要

deallocate(finish_, endOfStorage_ - finish_); 
endOfStorage_ = finish_; 

再分配做到这一点。我的意见有错吗?

+3

分配了一块内存;你怎么能释放它的一部分? – songyuanyao

+0

谢谢。在你回答之前,它使我感到困惑。 – zwfars

回答

4

C++标准库的分配器模型不允许部分释放内存。如果您为10 T分配了足够的空间,那么您只有一个空间的单个分配。你不能删除部分分配;你只能释放所有它。

因此,如果shrink_to_fit要改变容量,那么它只能通过执行重新分配来实现。

+0

感谢您的帮助。 :) – zwfars

0

要在简短的回答.. 是shrink_to_fit引起再分配

请去除未使用的容量。 这是一个不具约束力的将容量()减小到size()的请求。如果请求得到满足,则取决于实现。 如果发生重新分配,则所有迭代器(包括过去的末端迭代器)以及对元素的所有引用都将失效。如果不进行重新分配,则不会使迭代器或引用无效。

相关问题