[英]Where is the memory for a local C++ vector allocated?
我注意到vector的內存是動態分配的。 那么對於本地向量,內存在哪里分配?
f(){
vector<int> vi;
}
向量分配在堆棧上(我的系統上有28個字節)。 向量內容在堆上分配。
您可以使用Allocator模板類型和傳遞給構造函數的allocator對象的組合來更改為STL容器分配內存的方式。
我問了一個關於如何使用矢量使用堆棧存儲的問題,並得到了這個答案。 你可能會發現它很有趣。
為了擴展Yacoby的答案, RAII意味着當vi
超出范圍時,任何分配了new
(在向量內)的東西都是delete
d(在向量的析構函數中)。 這就是你如何混合堆棧和堆分配。
在它使用的allocator
決定分配的地方allocator
vector
。
在std::allocator
的默認情況下,它使用::operator new()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.