Прежде всего обратите внимание, что поведение программы определяет компилятор , а не IDE (программа, которую вы используете для написания кода).Другими факторами являются то, что в настоящий момент находится на диске и что вы получаете в качестве ввода (например, от пользователя, сети), системные часы и т. Д.
Теперь, как правильно указывает @DeiDei, вы получаете другое поведение, потому что ваш func()
Функция возвращает ссылку на локальную для нее переменную и выходит из области видимости после завершения ее выполнения.Его память в стеке (или связанный с ним регистр) может использоваться другими данными - и вы не получаете никаких гарантий относительно того, что происходит при обращении к ним.Это пример компилируемого кода, который имеет Неопределенное поведение при запуске.
Наконец, большинство компиляторов предупредит вас об этом - и я уверен, что это верно для обоих компиляторов, используемых вашими IDE.,Поэтому вам следует:
- Включить флаги предупреждений компилятора.
- Прочитать предупреждения и адресовать их.