cout << "blah blah blah"; for (int i=0; i < n; i++) { cout << '#' << endl;; } cout << "blah blah blah";
целое число i в кадре стека? если целое число может использоваться только в цикле, как операционная система отслеживает, какие переменные могут использоваться только в цикле, а не во всей функции?
Операционная система не имеет к этому никакого отношения - это работа компилятора.
Любая приличная система будет хранить меня в регистре процессора
В этом случае переменная i почти наверняка помещается в регистр.
i
Именно компилятор, а не операционная система, применяет правило, согласно которому переменная доступна только в цикле.(Это правило времени компиляции, а не правило времени выполнения.)