经过实验发现
OS对进程stack 空间的限制,为整个栈空间的限制。即包含整个栈空间所有栈帧的总和空间。
如当前stack限制为4MB,那么根据分析,单个栈帧的最大为4MB,整个栈空间最大为4MB。
#include<iostream>
using namespace std;
int i = 0;
void test() {
cout << "before\n";
char arr[1 * 1024 * 128];
cout << ++i << "\n";
test();
char t[1];
}
int main() {
// char arr[1 * 1024 * 1024]; //1 MB
// char arr[1 * 1024 * 512];
cout << "test\n";
test();
return 0;
}