簡體   English   中英

分配本地C ++向量的內存在哪里?

[英]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.

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