日々精進

新しく学んだことを書き留めていきます

コールスタックサイズについて2

よく考えたらコールスタックサイズはコールスタックに割り当てられているメモリサイズによって決まるんじゃないか?と思ったので再度実験しました。
コールスタックにはリターンアドレスとローカル変数が納められているので前回のコードを以下のように修正してコールスタックに積まれるデータの量を多くしてみました。

$i = 0

def test()
  puts $i
  a = Array.new(100)
  $i += 1
  test()
end

test()

その結果、「21163」でプログラムが止まりました。
やっぱりメモリ領域のサイズが決まってるんですねー。
ということで再帰の深さはどのぐらいまでなら大丈夫かは結局よくわからないという結論になってしまいました。。
このへんもうちょっと詳しく勉強したいな。