Max function stack size is limited and can be quickly exhausted if we use big stack variables or get careless with recursive functions.
But main’s stack isn’t really a stack. main is always called exactly once and never recursively. By all means main’s stack is static storage allocated at the very beginning and it lives until the very end. Does it mean I can allocate big arrays in main’s stack?
int main()
{
double a[5000000];
}
It’s implementation-defined (the language standard doesn’t talk about stacks, AFAIK). But typically,
mainlives on the stack just like any other function.