Witam, słyszałem wiele razy że funkcja zwracająca wskaźnik lub referencje na coś co jest lokalne to potworny błąd (często nawet kompilatory nie pozwalają skompilować takiego programu). Jednak chcąc to sprawdzić zrobiłem coś takiego:
int* f() {
int n = 4;
return &n;
}
int main(){
int* x = f();
std::cout << *x << std::endl;
return 0;
}
Ewidentnie zwracamy tu adres zmiennej lokalnej, co "najgorsze" wszystko działa jak po maśle:
C++ chyba nigdy nie przestanie mnie zaskakiwać :/ Dlaczego ten błędny zabieg okazał się tu możliwy do zrealizowania?
Korzystam z MS Visual Studio Community 2017.
Dziękuje serdecznie za pomoc i pozdrawiam :)
* co najgorsze adres: 00000049294FF704 zmiennej n nie wygląda na zbyt poprawny...