Что каждый программист должен знать о переполнении стекового буфера Один лишний символ — и scanf без ограничения длины ввода уже записывает данные за пределы буфера. Сперва оказывается затёртым соседний байт памяти. А если продолжить эксперимент, можно добраться и до адреса возврата из функции. Так что предупреждение «Так нельзя! Вы в зоне риска! Мы все умрём!» возникло не на пустом месте. В WinDbg последствия видны буквально по байтам: содержимое стека меняется, адрес возврата повреждён. Казалось бы, теперь можно проверить, что произойдёт дальше. Но вместо ожидаемого продолжения программа падает с Fail Fast Exception. Windows спасла нас от нас самих. Осталось разобраться, что именно помешало эксперименту и какую роль в этом сыграли защитные механизмы.