Объекты могут быть надеты и удалены только из верхней части стопки.Но как насчет чтения и записи их значений?Пожалуйста, исправьте меня, если я ошибаюсь, но я думаю, что процесс должен быть в состоянии читать из любой части стека, так как, если бы было возможно чтение только сверху, ему пришлось бы удалить (и где-то хранить) все содержимое стека вышепеременная, которую он хочет изучить.Но в таком случае, как процесс узнает, где именно в стеке находится конкретная переменная?Я подозреваю, что он просто содержит указатель на него, но где хранится этот указатель?
Другое дело - читая о стеках, я часто нахожу фразы типа «Вся память, выделенная в стеке, известна во время компиляции».Что ж, я, вероятно, неправильно понял это, поэтому, пожалуйста, скажите мне, в чем заключается недостаток в моей логике: предположим, локальная переменная создается, когда утверждение if()
истинно, а не когда оно ложно.Правда ли это получится во время выполнения.Таким образом, во время компиляции нет способа узнать, нужно ли его создавать, поэтому я не думаю, что память для него выделена вообще, так как это было бы расточительно.Следовательно, он не создается / не известен во время компиляции.