Насколько я понимаю, каждый поток обычно получает только один стек (в то время как все потоки в процессе обычно разделяют кучу). Я всегда думал, что стек используется для хранения значения счетчика программ (ПК) при вызове функции. Но затем я где-то читал, что определенные типы переменных, такие как integer
или boolean
, также выделяются в стек. Поскольку значения в стеках управляются строгим методом FILO, как эти переменные могут быть восстановлены в любое время?Как можно получить переменные в любое время, если они выделены в стек?
Например, после объявления int a, b, c;
, я могу делать все, что захочу, этим переменным в любом порядке в любое время в пределах их объема. Как это делается? Почему нет значения c
в верхней части стека и, следовательно, скрывает значения a, b
?