Вопрос проверяет базовое понимание модели памяти и различий между stack, heap и статической памятью.
Переменные и константы могут храниться в разных областях памяти. Локальные значения чаще всего размещаются в stack. Объекты классов хранятся в heap. Глобальные и статические значения размещаются в статической области памяти. Место хранения зависит от типа данных и времени жизни.
Размещение данных в памяти определяется не ключевым словом let или var, а типом данных и его временем жизни.
Stack
В stack обычно хранятся:
локальные переменные функций
значения value types (struct, enum), если они не захвачены
Stack:
работает по принципу LIFO
очень быстрый
автоматически очищается при выходе из области видимости
Heap
В heap хранятся:
объекты классов
данные с динамическим временем жизни
Heap:
управляется ARC
медленнее stack
требует явного управления временем жизни через ссылки
Статическая область памяти
Там размещаются:
глобальные переменные
static свойства и константы
данные, живущие все время работы приложения
Даже value types могут попасть в heap, если:
они захвачены замыканием
используются как часть объекта класса
Понимание того, где хранятся данные, помогает писать более производительный код и осознанно работать с памятью.