[問題] recursive and stack
請問一下 recursive 和 stack有什麼關係呢 剛剛google一下 沒找到= =
最近看到一個程式是關於parser 目錄的程式
大致上是長這樣子
showfolder是一個遞迴程式 不斷的往下尋找資料夾 並且印出來
這裡我會產生五百甚至一千個資料夾
使用系統是linux
問題是:
case1:
大概parser到四百多個目錄就會當掉了(如果沒有加closedir這一行的話)
雖然沒有跑完 也沒印出結果 但是記憶體狀況如下
40M(跑之前)-->1M(正在跑)-->40M(沒跑完)
case2:
有加closdir這一行跑起來都沒問題
但是我使用linux 的指令free去看記憶體的時候
好像記憶體不見了
40M --> 1M --> 1M
也就是他結果有印出來 但是記憶體卻沒吐回來 還是1M我以為會回來40M
想知道:
1.是不是stack暴掉了 我可以藉由改linux的stack size改善?
2.linux裡面有所謂的目錄限制嗎?
3.closedir不加跟有加 為什麼差那麼多呢 記憶體消失?
4.recursive 改成 for loop型式 有這樣的程式嗎
小弟還是新手 所以有很多問題:D 請多多包含:D
int showfolder(char *path)
{
...
...
dir=opendir(PATH);
...
while((dirent = readdir(dir)) != NULL ){
...
lstat(pathname, &stat);
if(S_ISDIR(stat.st_mode))
{
...
showfolder(pathname);
}
...
}
puts(buf);
memset(buf, 0, sizeof(buf))
closedir(dir) // strange ??
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.138.144
推
03/03 21:44, , 1F
03/03 21:44, 1F
→
03/03 21:45, , 2F
03/03 21:45, 2F
→
03/03 21:45, , 3F
03/03 21:45, 3F
→
03/03 21:47, , 4F
03/03 21:47, 4F
→
03/03 21:48, , 5F
03/03 21:48, 5F
推
03/03 23:50, , 6F
03/03 23:50, 6F
→
03/03 23:52, , 7F
03/03 23:52, 7F
→
03/04 00:23, , 8F
03/04 00:23, 8F