縮小以適合---這可能會導致重新分配,但對矢量大小沒有影響,並且不能更改其元素。shink_to_fit是否會導致重新分配?
在我看來,容量()總是比尺寸更大的(),我們可以使用所以從來不需要
deallocate(finish_, endOfStorage_ - finish_);
endOfStorage_ = finish_;
再分配做到這一點。我的意見有錯嗎?
縮小以適合---這可能會導致重新分配,但對矢量大小沒有影響,並且不能更改其元素。shink_to_fit是否會導致重新分配?
在我看來,容量()總是比尺寸更大的(),我們可以使用所以從來不需要
deallocate(finish_, endOfStorage_ - finish_);
endOfStorage_ = finish_;
再分配做到這一點。我的意見有錯嗎?
C++標準庫的分配器模型不允許部分釋放內存。如果您爲10 T
分配了足夠的空間,那麼您只有一個空間的單個分配。你不能刪除部分分配;你只能釋放所有它。
因此,如果shrink_to_fit
要改變容量,那麼它只能通過執行重新分配來實現。
感謝您的幫助。 :) – zwfars
要在簡短的回答.. 是shrink_to_fit引起再分配
請去除未使用的容量。 這是一個不具約束力的將容量()減小到size()的請求。如果請求得到滿足,則取決於實現。 如果發生重新分配,則所有迭代器(包括過去的末端迭代器)以及對元素的所有引用都將失效。如果不進行重新分配,則不會使迭代器或引用無效。
分配了一塊內存;你怎麼能釋放它的一部分? – songyuanyao
謝謝。在你回答之前,它使我感到困惑。 – zwfars