Będąc początkującym programistą C++ i architekturą systemów komputerowych, wciąż uczę się podstaw języka C++. Wczoraj czytałem o funkcji rekurencyjnej, więc postanowiłem napisać własną rękę, oto co napisał: (bardzo podstawowy)Przepełnienie stosu spowodowane funkcją rekursywną
int returnZero(int anyNumber) {
if(anyNumber == 0)
return 0;
else {
anyNumber--;
return returnZero(anyNumber);
}
}
I kiedy to zrobić: int Zero1 = returnZero (4793); powoduje to przepełnienie stosu, jednak jeśli przekażę wartość 4792 jako parametr, nie nastąpi przepełnienie.
Jakieś pomysły, dlaczego?
Może większa wartość jest dokładnie to co jest potrzebne do przepełnienia stosu? – Listing
Spróbuj 5000 - najprawdopodobniej również przepełni stos. Ile pamięci ma twój system? – Silas
Pytasz, dlaczego twój stos ma określony rozmiar? –