скрытое меню

Куча и стек

Есть изменяемая память и неизменяемая.

SRAM будем называть оперативную память, изменяемая , она же статическая , static (как ни странно) . Но по факту статическая означает исчезающая с отключением питания.

FLASH неизменяемая память , где хранится код программы. И после выключения питания и при при включении.

Откуда заполняется SRAM при включении питания? Естественно из неизменяемой памяти (FLASH).

Самая скрытая не афишируемая часть программирования - это загрузка SRAM из FLASH при старте (контроллера) всякими данными (кодом), всем чем угодно.

Стек , куча - изменяемая память

фотка 1

Куча - некая память (оперативная/SRAM) куда помещаются изменяемые данные.

Создание объектов в куче:
int i1=0;
static int i2=0;
new (C++)
malloc (C)

Если данные определять с префиксом static, то они попадут в SRAM (куча).
Если данные (всякие переменные , массивы) не помечать никак , то они тоже скорее всего попадут в SRAM (куча).
А вот если определять с префиксом const, то данные попадут в неизменяемую память например FLASH.

Стэк это тоже оперативная / статическая / изменяемая память. Но используется обычно для временного хранения некоторых переменных. А точнее из какой функции в какую вошли, чтобы потом вспомнить в какую надо возвращаться.

Функция - это код, который располагается где-то в памяти , обычно в неизменяемой памяти FLASH .
Но если у функции есть префикс static , то сама функция НЕ помещается в SRAM. На что это влияет пока не понятно.