Каково представление для вызова функции в стеке? - PullRequest
0 голосов
/ 24 ноября 2018

Сегодня я прочитал статью, в которой рассказывается о golang goroutine.Это говорит о том, что, если существует слишком много рекурсивных вызовов, пространство горутин будет расширено.На мой взгляд, во время работы программы каждый вызов функции создает новый стек, а система только выдвигает объект, похожий на указатель (некоторый код механизма), который указывает на созданный стек на вершину стека вызывающей функции.Когда процессор загрузит этот объект, он сохранит текущий контекст и перейдет к созданному стеку.После того, как вызванная функция вернулась, процессор запишет возвращаемое значение, которое находится в регистре, обратно в объект.Если мое понимание верно, то для вызова рекурсивной функции при вызове стека остается только небольшое пространство.Читая эту статью, я сомневаюсь, что мое понимание неверно.Пусть при каждом вызове функции весь код вызываемой функции помещается в стек вызывающей функции, но не объект, похожий на указатель.Если это так, то вызов функции создаст много места в стеке вызовов.Я искал этот вопрос в Google, но безрезультатно.Кто-нибудь может мне помочь?

Обновление: Я нашел ответ https://www.geeksforgeeks.org/memory-layout-of-c-program/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...