C++ 为什么这不会导致堆栈溢出?全局向量存储在哪里(堆栈或堆)?

C++ 为什么这不会导致堆栈溢出?全局向量存储在哪里(堆栈或堆)?,c++,stack,overflow,global,C++,Stack,Overflow,Global,我认为本地_数组将被放置在堆栈上,从而溢出(?)。 全局_数组也不会溢出,所以我假设堆上有,对吗 vector <int> global_array; //if I fill this array: is it the stack or the heap ? int main() { vector <int> local_array; for (int i=0; i < 100000000; i++) local_array.push_back(1); // n

我认为本地_数组将被放置在堆栈上,从而溢出(?)。 全局_数组也不会溢出,所以我假设堆上有,对吗

vector <int> global_array; //if I fill this array: is it the stack or the heap ?

int main() {
vector <int> local_array; 
for (int i=0; i < 100000000; i++) local_array.push_back(1); // no stack overflow!
for (int i=0; i < 100000000; i++) global_array.push_back(1); // no stack overflow!
int array[1000000]; // stack overflow.
}
矢量全局数组//如果我填充这个数组:是堆栈还是堆?
int main(){
矢量局部阵列;
对于(int i=0;i<100000000;i++)本地_数组。向后推(1);//无堆栈溢出!
对于(int i=0;i<100000000;i++)全局_数组。向后推(1);//无堆栈溢出!
int数组[1000000];//堆栈溢出。
}

正如评论中所说。std::vector使用动态分配的数组来存储它们的元素,因此两个向量都存储在堆上,因此没有堆栈溢出。

std::vector
始终使用动态分配(“堆”)。