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

时间:2010-03-05 16:22:59

标签: c++ vector

我注意到vector的内存是动态分配的。那么对于本地向量,内存在哪里分配?

f(){

 vector<int> vi;
}

4 个答案:

答案 0 :(得分:19)

向量分配在堆栈上(我的系统上有28个字节)。向量内容在堆上分配。

答案 1 :(得分:5)

您可以使用Allocator模板类型和传递给构造函数的allocator对象的组合来更改为STL容器分配内存的方式。

我问了一个关于如何使向量使用堆栈存储的问题并得到this answer.你可能会发现它很有趣。

答案 2 :(得分:3)

要扩展Yacoby的答案,RAII表示当vi超出范围时,使用new(在向量内)分配的任何内容都是delete d(在矢量的析构函数)。这就是你如何混合堆栈和堆分配。

答案 3 :(得分:3)

vector会在其使用的allocator决定分配的地方分配。

std::allocator的默认情况下,它使用::operator new()