C++ 其中是本地C++;矢量分配?
我注意到vector的内存是动态分配的。对于局部向量,内存分配在哪里C++ 其中是本地C++;矢量分配?,c++,vector,C++,Vector,我注意到vector的内存是动态分配的。对于局部向量,内存分配在哪里 f(){ vector<int> vi; } f(){ 向量vi; } 向量在堆栈上分配(在我的系统上为28字节)。向量内容在堆上分配。扩展Yacoby的答案,意味着当vi超出范围时,任何分配了new(向量内部)的内容都是deleted(在向量的析构函数中)。这就是混合堆栈和堆分配的方式。您可以结合分配器模板类型和传递给构造函数的分配器对象来更改为STL容器分配内存的方式 我问了一个关于如何使向量使用堆栈存储
f(){
vector<int> vi;
}
f(){
向量vi;
}
向量在堆栈上分配(在我的系统上为28字节)。向量内容在堆上分配。扩展Yacoby的答案,意味着当vi
超出范围时,任何分配了new
(向量内部)的内容都是delete
d(在向量的析构函数中)。这就是混合堆栈和堆分配的方式。您可以结合分配器模板类型和传递给构造函数的分配器对象来更改为STL容器分配内存的方式
我问了一个关于如何使向量使用堆栈存储的问题,你可能会发现它很有趣。无论
分配器决定从哪里分配向量
在std::allocator
的默认情况下,它使用::operator new()
你说的“哪里”是什么意思?你是说堆还是堆栈?