Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 3.835 pregleda

Najnovija ↓

Premali stek na Visual C++ 2005 04.02.2007. u 18:17 · pre 240 meseci #1
Pravim win32 konzolne aplikacije u VC++ 2005 i rekurzivna funkcija ne moze sama sebe da pozove vise od 3770 puta. Program puca bez javljanja greske, ali mi se cini da sam nekako uspeo da utvrdim da program puca zbog StackOverflow-a? Da li je moguce povecati stack? Ili...
Potpis
Sendvic uvek pada na namazanu stranu!
Re: Premali stek na Visual C++ 2005 04.02.2007. u 18:49 · pre 240 meseci #2
Ovaj, ja bih pre pogledao zasto dolazi do stack overflow-a nego sto bih povacavao stack ;)

Doduse, ako bas hoces da primenis "ruski sistem" (grubu silu) - mozes reci linkeru da ti alocira stack od, recimo, 2 GB :)
Potpis
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Re: Premali stek na Visual C++ 2005 04.02.2007. u 19:43 · pre 240 meseci #4
void f(int i){
if (i<5000) f(i+1);
else cout<< i;
}

funkciju f pozivam sa f(1).

Naravno nije ovo f-ja koja mi treba, ali posto sam i ja sumnjao da nesto drugo ne valja napravio sam ovu jednostavniju f-ju i ni ona ne radi. Program se jednostavno zavrsi bez prijavljivanja ikakve greske a ispisivanje broja 5000 se ne desi.

Kako da linkeru kazem da mi alocira stek od 2gb?
Potpis
Sendvic uvek pada na namazanu stranu!
Re: Premali stek na Visual C++ 2005 04.02.2007. u 22:54 · pre 240 meseci #5
Koristiti rekurziju u imperativnim jezicima kao što je C++ je dobro samo kao vežba. Ne samo što dolazi do stack overflow-a (što si i sam saznao), već se i performanse degradiraju. Jednostavno, koristi iteraciju i biće sve OK.

Potpis
IOCC
Re: Premali stek na Visual C++ 2005 04.02.2007. u 23:43 · pre 240 meseci #6
Da, StackOwerflow na i = 4795...

Kad ti se ovako nesto dogodi, "bolje" je izmjeniti algoritam nego mijenjati velicinu stacka.


Citat:
Dragi Tata: Koristiti rekurziju u imperativnim jezicima kao što je C++ je dobro samo kao vežba. Ne samo što dolazi do stack overflow-a (što si i sam saznao), već se i performanse degradiraju. Jednostavno, koristi iteraciju i biće sve OK.
Ne sjecam se da sam ikad koristio rekurziju van natjecanja.
A i "svaka" rekurzija se moze razmotati s sigurnim 'performance gain-om'. (u pravilu)
Re: Premali stek na Visual C++ 2005 05.02.2007. u 13:16 · pre 240 meseci #7
Hvala na odgovorima!

Ja sam sve to vec znao. Spremam ispit iz algoritama. Za neke stvari trebada naucim i rekurzivne i iterativne algoritme, a kad vec ucim volim da vidim i da to radi. Za to mi treba veliki stek, pa bih molio nekoga da mi odgovori na vec postavljeno pitanje. Po mogucstvu stek bi trebao da bude dovoljno veliki da podrzi 1.000.000 rekurzivnih poziva.

Unapred hvala!
Potpis
Sendvic uvek pada na namazanu stranu!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme