簡體   English   中英

boost::deque 何時分配/解除分配?

[英]When does boost::deque allocate/deallocate?

我試圖找到一些關於boost::container::deque分配/釋放行為的保證,但找不到。 我的假設如下。

  1. 如果有空閑塊,則不會分配塊。
  2. 它保留所有釋放的塊,所以分配的塊只有在shrink_to_fit之后才會被釋放?
  3. 當沒有新項目的空間時,將分配一個新塊。 如果新分配的塊的句柄沒有空間,所有的塊句柄都會被重新分配。

這些假設是否正確?

boost::deque 何時分配/解除分配?

Memory 將在容器被銷毀時釋放。 當容器收縮時,未使用的 memory 可能會被釋放。 否則分配和釋放沒有記錄,因此細節取決於庫的實現。

  1. 如果有空閑塊,則不會分配塊。

這是一個合理的期望,但文檔不能保證。

  1. 它保留所有釋放的塊,所以分配的塊只有在shrink_to_fit之后才會被釋放?

文檔也不保證這一點。 請注意,與向量不同,deque 可以滿足其復雜性要求,即使它提前釋放。

  1. 當沒有新項目的空間時,將分配一個新塊。 如果新分配的塊的句柄沒有空間,所有的塊句柄都會被重新分配。

文檔也不保證。 然而,當沒有可用空間時,可以合理地預期 memory 將被分配。

正如在此處指出並在此處檢查的那樣,第二個假設對於boost::container::deque (以及所有編譯器的std::deque實現)是不正確的。

順便說一句,它會提前解除分配,如果沒有辦法阻止它,那么我就無法達到提供boost::container::deque::shrink_to_fit的目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM