то создаётся стек и туда кладутся эти функции?
да, и стек может закончится и будет бобо
функции никуда не кладутся. Код функции лежит там же, где и весь остальной код, в памяти программ. А в процессе исполнения программы под каждый вызов функции выделяется место на стеке (который суть часть доступной программе памяти) Структуры данных тут вообще не при чем
Тогда в этом случае стек это заранее выделенная память для программы?
стек это просто кусок зарезервированой памяти, цельный. Все что не в куче, на стеке, так проще понять. Изменить его размер нельзя, так что его переполнение - критическая ошибка
Если "заранее" - перед вызовом функции, то да
Можно изменить размер...
наверное, речь шла про рантайм
и как же? Процесс запущен, стек закончился. Как увеличить?
Я вообще говорю, а не про рантайм)
https://releases.llvm.org/3.0/docs/SegmentedStacks.html
Почему Страуструп написал "этот стек который часто называют стеком вызовов - структура данных которая увеличивается и уменьшается в соответствии с правилом "последний зашёл, первый вышел" "?
при рекурсивном вызове все вызванные функции никуда не выходят, а остаются) В этом и дело
Потому что это стек и называется он так как работает как стек)
Увеличивается используемый в текущий момент размер, а максимально доступный фиксирован
> структура данных которая увеличивается и уменьшается память под макс размер стека, ну условн мегабайт 8 уже выделена сразу а меняется указатель верхушки стека, базы стека и тд
Стека нет, просто функция взывает сама себя
Причём std::stack никакого отношения к этому не имеет
Обсуждают сегодня