Переменные могут храниться в областях памяти или в регистрах процессора, в зависимости от настроек компилятора и оптимизации.
Предположим, что ваш компилятор использует стек для локальных переменных и параметров функции. Ваша переменная a_number
будет помещена в стек, поскольку ее время жизни является временным (исчезнет после того, как выполнение выйдет из функции).
Компилятору разрешено помещать a_number
в процессор register
. В этом случае переменная не существует в памяти, потому что регистры процессора не находятся в памяти (у них нет адресов).
Поскольку ваша программа не использует переменную a_number
после объявления, компилятор может исключить переменную и не использовать память. Нет различий в поведении вашей программы с переменной или без нее;таким образом, компилятор может исключить переменную.
Расположение вашей переменной зависит от вашего компилятора. Ваш компилятор может хранить переменные «в стеке», в регистре процессора или исключать переменные. Расположение также зависит от «настроек оптимизации» вашего компилятора. Некоторые компиляторы могут не оптимизировать на самых низких настройках и удалить переменную на более высоких настройках.