185 похожих чатов

Приветик, готовлю теорию к собесам своим первым Подскажите плиз, все ли

я правильно понял?

1) Приложение компилируется
Swift => абстракция LLMC => Assembly => Машинный код
2) Перед запуском:
три секции в оперативной памяти:
code section - машинный код со всеми инструкциями
stack - почти пустой, но определен размер во время компиляции
heap - пустая
3) После запуска начинает выполнятся машинный код сверху вниз инструкция за инструкцией
___
все глобальные переменные, шаблоны классов, функции лежат в code section
___
в стеке выполняются только функции -> создается фрейм с размером памяти, определенным на компиляции для локальных переменных или указателей на кучу/машинный код в случае ссылочного типа, также во фрейме лежит указатель куда вернуться после выполнения функции
Переменные в стеке лежат и можно обращаться на изменение любой, так как компилятор знает смещение адреса памяти относительно Stack Pointer (Указателя стека)

Опционалы хранятся в куче

Если value-type свойства класса - хранятся в куче

В каждом потоке один стек
__
если одна функция вызывает другую, то вторая кладется в стек поверх стека, и возвращается к первой, когда уйдет из памяти (LIFO)

7 ответов

22 просмотра

Куда ты собираешься собеседоваться?

Георгий- Автор вопроса

Опционалы — это enum, они в стеке живут

Георгий- Автор вопроса

Я с этого начал https://www.geeksforgeeks.org/memory-layout-of-c-program/

Kirill Vasilyev
Опционалы — это enum, они в стеке живут

indirect enum имеют ссылочный тип, часто такое на собесах есть

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
17
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
А кто такой мужчина в твоем понимании Азиз?
who?です 🐈
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Ну значит тебе повезло, мы же про транк говорим оба?
Александр (Rouse_) Багель
11
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
Карта сайта