StackOverflowExceptionを使用すると、スローされる条件はハードコーディングされますか、それともコードが実行されているマシンに依存しますか?
私は後者をほぼ確信していますが、私の検索に失敗し、ここで十分な質問をしていません。
StackOverflowExceptionを使用すると、スローされる条件はハードコーディングされますか、それともコードが実行されているマシンに依存しますか?
私は後者をほぼ確信していますが、私の検索に失敗し、ここで十分な質問をしていません。
ドキュメントから:
...ネストされたメソッド呼び出しが多すぎるため、実行スタックがオーバーフローするとスローされます。
スタックのサイズはアーキテクチャに依存し、マシン上でオーバーライドすることもできるため、はい、この値はハードコーディングされていませんが、Windowsでは一般的にかなり静的です。正しく覚えていれば、デフォルトでは1MBのサイズです。
あなたの質問に完全に一致するわけではありませんが、以下も参照してください。
ネストされたメソッド呼び出しが多すぎるために実行スタックがオーバーフローした場合にスローされる例外。このクラスは継承できません。MSDN
このコードをいくつか変更して試しました。私の経験に応じて上記のステートメントを変更します
Framework 4.0 7573 のネストされたメソッド呼び出しが含まれているために実行スタックがオーバーフローしたときにスローされる例外。このクラスは継承できません。
Framework 2.0 7038 のネストされたメソッド呼び出しが含まれているために実行スタックがオーバーフローしたときにスローされる例外。このクラスは継承できません。
スタック フレームは、OS のアドレッシング モードによって異なります。x64 は少し大きいスタック フレームを使用していると思います。プロセス空間は x86 よりもはるかに大きくなる可能性があることに注意してください。そのため、RAM とスワップ ファイルのサイズが問題にならない場合は、x64 でより多くのフレームを受け入れるようにスタックを構成できるはずです。