C++ позволяет программисту использовать либо память, выделенную стеком, либо динамическую память в куче. Я довольно хорошо понимаю, как работает стек (я создавал стеки в качестве упражнений на C++), но мне все еще любопытно, как и где определяется «стек».
Является ли «стек» функцией языка, функцией ОС или функцией оборудования? У меня есть смутное представление о том, что каждый стек — это что-то, относящееся к каждому из множества активных процессов потока с точки зрения операционной системы. Это говорит мне о том, что это реализовано на уровне программного обеспечения, а не аппаратной функции процессора или материнской платы.
Я предполагаю, что в случае C++ компилятор мог вставить реализацию стека в каждый двоичный файл. Или, может быть, ОС применяет свою собственную реализацию стека к каждому запущенному процессу? Как и чем это определяется?
Я нашел аналогичный вопрос здесь, но я не Я не вижу ответа на него, и я надеюсь переформулировать вопрос более прямо.
:)
не позволяйте названию ввести вас в заблуждение. en.wikipedia.org/wiki/Язык_программирования, ориентированный на стек. И на вопрос, который вы связали, есть ответ. - person Matt Ball   schedule 28.03.2015