[1371] Re:関数の再起について
投稿者:(ぱ)こと管理人
2009/06/22 01:46:36
> 関数の再起についてですが、VC++ の標準スタックでデバックビルドの時、
>約460回の再起が可能です。その結果上限として450回を超えたらエラーとし、
>エラー表示とともに関数コールをせずにリターンする処理としました。
>リリースビルドでは多分この数倍いけると思いますが、450回も出来ればOK
>だと考えています。スレッド分複数VM起動もしますから。
>diksamではどの様にしていますか?
ええと、解析木を再帰でほじって実行するcrowbarならいざしらず、Diksamでは、
Diksamの関数をいくら再帰呼び出ししても、Cのスタックは消費しません。
DVMのスタック(ヒープに確保される)が伸びていくだけです。
なお、現在はDiksamはシングルスレッドですが、スレッドを分けるなら、
DVMのスタックも分離する必要があると考えています。
すみません、いまいちよくわからないです。関数呼び出しのたびにVM起動して
いるわけではないですよね?