У меня есть основной вопрос о поведении стека вызовов.Я хотел бы знать, как система управляет памятью стека вызовов, когда функция вызывается в конце другой функции.
Например:
void FunctionOne(void)
{
[...] // Various code operations
FunctionTwo();
}
void FunctionTwo(void)
{
[...] // Various code operation
FunctionThree();
}
void FunctionThree(void)
{
[...] // Various code operation
FunctionFour();
[...] // Various code operation
}
Имеет ли память стека вызововочищается, когда выполнение переходит от FunctionOne () к FunctionTwo (), потому что после вызова FunctionTwo () нет инструкций?
Сохраняет ли память стека весь уровень выполнения при переходе от FunctionTwo () кFunctionThree ()?
Или, может быть, я с самого начала не прав насчет работы стека вызовов и его назначения?
Спасибо за помощь.