fun
триггеры неопределенное поведение .
Пожалуйста, всегда компилируйте со всеми включенными предупреждениями компилятора . Это должно дать вам предупреждение, что вы совершаете эту самую ошибку.
Ваш main
также вызывает неопределенное поведение, потому что стандарт C ++ требует, чтобы была только одна единственная функция с именем main
, и она возвращала int
. Тем не менее, вам разрешено, как особый случай, опускать оператор return
в вашей (исправленной) функции main
.
«Стек», как вы предполагаете, не является частью языка C ++. Но это не имеет значения; Стандарт гласит, что возвращаемый объект создается в области действия вызывающей стороны, и это все, что вам нужно знать.
(Практически, невозвращенный int
, вероятно, будет заканчиваться как неинициализированная переменная типа int
, но стандарт говорит, что вызов функции уже вызывает неопределенное поведение, а не просто доступ для чтения позже.)