C++;本地集装箱 在C++中,当我使用具有确定大小的数组: int a(10000);在作为局部变量的函数中,允许的大小小于将其声明为全局变量时的大小

C++;本地集装箱 在C++中,当我使用具有确定大小的数组: int a(10000);在作为局部变量的函数中,允许的大小小于将其声明为全局变量时的大小,c++,function,variables,containers,C++,Function,Variables,Containers,我知道这是由于函数的堆栈大小造成的 但是像vector、list、queue、stack、priority_queue、map等容器呢?当它们是局部变量(如inta[10000])时,它们是否受到限制?std::array具有与C样式数组相同的空间约束。所有其他标准容器动态分配内存,因此不受堆栈大小的限制。std::array具有与C样式数组相同的空间约束。所有其他标准容器动态分配内存,因此不受栈大小限制。 < P>不,因为C++标准容器(除了 STD::数组C++ >代码11)将在堆上分配内存

我知道这是由于函数的堆栈大小造成的


但是像vector、list、queue、stack、priority_queue、map等容器呢?当它们是局部变量(如
inta[10000]
)时,它们是否受到限制?

std::array
具有与C样式数组相同的空间约束。所有其他标准容器动态分配内存,因此不受堆栈大小的限制。

std::array
具有与C样式数组相同的空间约束。所有其他标准容器动态分配内存,因此不受栈大小限制。

< P>不,因为C++标准容器(除了<代码> STD::数组C++ >代码11)将在堆上分配内存。

< P>不,因为C++标准容器(除了<代码> STD::数组< /C> > C++ 11)将在堆上分配内存。

这些容器受堆限制,而不是堆栈
向量
等。。。动态分配其内部存储。
vector
位于本地存储中,通常位于堆栈上,但
vector
只不过是指向存储在其他位置且大小限制非常不同的数据的两个指针。这取决于它们运行的系统。它们使用动态内存分配,这通常是一个更大的内存池。这些容器受到堆的限制,而不是堆栈
向量
等。。。动态分配其内部存储。
vector
位于本地存储中,通常位于堆栈上,但
vector
只不过是指向存储在其他位置且大小限制非常不同的数据的两个指针。这取决于它们运行的系统。它们使用动态内存分配,这通常是一个更大的内存池。