Я бегу следующий простой программы в C++ программе:Почему ссылка на локальную переменную остается в силе
#include <iostream>
using namespace std;
string& ShowString()
{
string s1 = "abcd";
return s1;
}
int main()
{
string s2 = ShowString();
cout << s2 << endl;
return 0;
}
и выход: abcd
Проблема заключается в том, что функция ShowString
возвращает ссылку к локальная переменная и к тому времени, когда программа достигнет cout << s2 << endl
, s1
должен был быть уничтожен (а также s2
). Но вывод по-прежнему верен, что приводит меня к выводу, что, хотя s1
больше не существует, его содержимое в стеке памяти все еще действует (возможно, до тех пор, пока что-то его не перезапишет).
Я ценю, если вы могли бы сообщить мне, правильный ли этот вывод.
Thanks