Разрушение стека?Значения, которые вы видите, на самом деле являются значениями в стеке, и когда foo был вызван, копия была сделана только для foo, нажав на значение id, которое было в то время.Поэтому, если foo изменяет свою локальную копию, он, очевидно, будет иметь другое значение, но если кто-то запустит массив (я предполагаю, что это в C), он также может перезаписать значение id.
Так, например, предположим,тот abc вызвал foo и имел массив длины 120, объявленный локально.Кто-то имеет указатель на этот массив и копирует в него 240 байт, не замечая, что это выходит за пределы конца массива.Что ж, эти дополнительные 120 байтов окажутся поверх переменных, которые foo использует как локальные.