dfs

Vieta, kur parunāt par to, kas nav atsevišķi izdalīts augstāk
Message
Author
User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

dfs

#1 Post by kristapuciitis » 28 Mar 2013, 12:33

Sveiki!
Vai tas ir normāli ka šāds koda gabals nokrešo, kad d ir ap 4700?

Code: Select all

#include <iostream>

void dfs(int d)
{
	if (d < 5000)
		dfs(d+1);
};

int main()
{
	dfs(0);
	return 0;
};
Man šķiet, ka šī ir pārāk maza vērtība priekš stack overflow. Ja tā ir pārāk maza vērtība, tad kur ir problēma?
Gooby pls

User avatar
vecais_dumais_laacis
Guru
Guru
Posts: 109
Joined: 06 Dec 2010, 18:48
Contact:

Re: dfs

#2 Post by vecais_dumais_laacis » 28 Mar 2013, 15:34

atkariigs no stacka :D
...un ja bites buutu laachi...

kovacs
Posts: 81
Joined: 13 Dec 2010, 15:23

Re: dfs

#3 Post by kovacs » 28 Mar 2013, 16:05

tīri interesei- ja tu nodod 2us int parametrus tad nokrašo 2x ātrāk? :roll:

par kādu os/kompilatoru ir runa?

ps. "nokrašo" ar tieši kādu error, btw? Man domāt stack overflow gadījumos, parasti programmas pasaka "stack overflow"...

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: dfs

#4 Post by kristapuciitis » 29 Mar 2013, 16:07

Ja padod vienu parametru, tad stack overflow ir pie 4800, bet, ja divus, tad pie 4700. Es izmantoju VC++ 2010. Nu jā, ja palaiž ar debug, tad rāda, ka ir stack overflow.
Gooby pls

User avatar
Arrovs
Posts: 107
Joined: 09 Dec 2010, 18:09
Location: Saldus-Jelgava

Re: dfs

#5 Post by Arrovs » 30 Mar 2013, 04:54

Tā ir ļoti maza vērtība. Līdz man programma avarē tā izpilda aptuveni 2+miljonus iterāciju.
Bet varbūt VC rūpējas par to laicīgi. Neesu testējis.
Arrovs vēl joprojām dzīvs.

kovacs
Posts: 81
Joined: 13 Dec 2010, 15:23

Re: dfs

#6 Post by kovacs » 02 Apr 2013, 14:17

moš pamēģini izrubīt optimizāciju, iespējams kompilators pārcenšas ar kaut kādām pārgudrībām.

spicausis
Posts: 13
Joined: 14 Jan 2011, 07:57

Re: dfs

#7 Post by spicausis » 02 Apr 2013, 17:41

msvc 2010 steka noklusētais izmērs ir 1 megabaits, overflows ir ok.

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: dfs

#8 Post by bubu » 02 Apr 2013, 21:46

Lai overflows notiku uz 4700 iterācijām, tad katram steka freimam būtu jābūt 1MB/4700 = ~220 baiti. Kas pat debug modē ir diezgan liela vērtība šādai dfs funkcijai.

elvman
Posts: 434
Joined: 06 Dec 2010, 18:43
Location: Rīga
Contact:

Re: dfs

#9 Post by elvman » 03 Apr 2013, 00:58

bubu wrote:Lai overflows notiku uz 4700 iterācijām, tad katram steka freimam būtu jābūt 1MB/4700 = ~220 baiti. Kas pat debug modē ir diezgan liela vērtība šādai dfs funkcijai.
Praktiski visiem kompilatoriem (ieskaitot Visual Studio) stack'a izmēru var mainīt, iespējams tas ir šis gadījums (daudz mazāks par 1MB?).
Beidz runāt, sāc darīt!

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: dfs

#10 Post by bubu » 03 Apr 2013, 06:18

Kad pēdējo reizi tu esi mainījis projekta uzstādījumos defaultā steka izmēru uz mazāku un pēc tam brīnījies, kāpēc rekursija neiet pietiekami dziļi? :)

Post Reply

Return to “Programmēšana / Programming”