Урок 13 - Рекурсия. Стек вызовов (Call Stack). Куча.

preview_player
Показать описание
В этом уроке мы продолжим изучать функции. И в этот раз мы поговорим о внутреннем их устройстве. Разберемся как передаются параметры в функцию, как возвращается результат, где сохраняются локальные переменные функции, а также как функция узнает куда передать управление после того как она отработала.
Чтобы ответить на эти вопросы, мы разберемся какие сегменты памяти выделяются для программы. Что такое стек вызовов (Call Stack), куча (Heap). Также узнаем что такое рекурсия и переполнение стека вызовов.
Ну и напоследок я расскажу как взламываются программы на Си и как обезопасить свою программу от взлома.

00:00 Вступление
00:30 О чем этот урок?
04:45 Что такое стек?
07:18 Сегменты памяти программы
09:09 Этапы выполнения программы
12:05 Как работает Push в Call Stack?
14:50 Пример работы Call Stack во время выполнения программы
21:34 Что такое рекурсия?
30:35 Сегмент памяти Куча (Heap)
39:26 Выводы
40:30 Как взламывают программы на Си?
44:05 Заключение
Рекомендации по теме
Комментарии
Автор

Всем привет. Я понимаю, что в этом уроке много тонкостей, которые возможно не нужны новичкам. Но все равно я считаю их нужно знать. Даже если хотя бы чуть-чуть информации отложится и будет хоть примерное понимание Call Stack, кучи и тд, вам это сильно поможет в дальнейшем.

ivan.goncharov
Автор

А разве функция, которая выделяет память, не должна внутри себя вызывать фри?

Pzqmoxwniceb