簡體   English   中英

C ++ STL問題:分配器

[英]C++ STL question: allocators

我有一個關於C ++ STL的(可能是愚蠢的)問題。 當我創建一個容器(向量,集合,映射等)時,它是在堆棧上還是在堆上分配的? 如果我制作一組並放置500萬個字符串,我是否需要擔心堆棧溢出?

默認情況下,STL類從堆中分配其內部緩沖區,盡管這些類還允許自定義分配器允許用戶指定要從中分配的備用位置 - 例如共享內存池。

STL容器的默認分配器使用operator new和delete,因此它是包含所包含類型的路由。 (一般來說,它來自堆,除非你做一些事情來覆蓋它。)

分配500萬個字符串不會導致堆棧溢出。 即使您創建了基於堆棧的分配器,它甚至可能會在您插入一個字符串之前溢出。

容器本身是在您決定的地方分配的(它可以是堆棧,堆,對象的成員等),但默認情況下,它使用的內存與其他描述的一樣,在Free Store上進行(通過new和delete管理)這與堆不同(通過malloc / free管理)。

不要把兩者混在一起!

暫無
暫無

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

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