Статические переменные хранятся в разных сегментах памяти с некоторыми особенностями:
Сегмент инициализированных данных. 5 Здесь хранятся глобальные и статические переменные, которые инициализированы значениями, отличными от нуля. 5 Эти переменные сохраняют свои значения на протяжении всего выполнения программы. 5
Сегмент неинициализированных данных (BSS Segment). 35 Здесь хранятся глобальные и статические переменные, которые инициализированы значениями по умолчанию (обычно нулями). 5
Сегмент стека. 35 Используется для хранения локальных переменных, параметров функций и адресов возврата. 5 Стек работает по принципу LIFO (Last In, First Out). 5 Когда вызывается функция, её параметры и локальные переменные помещаются в стек. 5 Когда функция завершает выполнение, эти данные удаляются из стека. 5
Сегмент кучи. 35 Используется для динамического распределения памяти. 5 Память в куче выделяется и освобождается вручную с помощью операторов new и delete в C++. 5
Статические переменные размещаются ещё во время компиляции, их адреса неизменны всё время работы программы. 2