Я просто хочу убедиться, что все правильно. Представьте, что размер стека для любой программы на моей машине равен 800 байт (просто пример). Затем, следующий код:
void f()
{
char x[300];
char y[300];
char z[300];
char t[300];
}
должен переполнять стек вправо (потому что 1200 > 800)?
Теперь мой вопрос заключается в следующем подходе способ Ok победить вышеупомянутую проблему?
void f()
{
f1();
f2();
}
где:
void f1()
{
char x[300];
char y[300];
}
void f2()
{
char z[300];
char t[300];
}
таким образом, согласно моим рассуждениям, каждая функция потребляет всего 600 байтов (< 800) из памяти стека, поэтому все должно быть в порядке. Я прав?
пс. Я не имею в виду "другие" данные, которые могут занимать место в стеке для этого примера.
ПФС. Другими словами, так ли это, что каждый раз каждая функция f(), f1() и f2() получает свой "экземпляр" стека?