5

StackOverflowExceptionを使用すると、スローされる条件はハードコーディングされますか、それともコードが実行されているマシンに依存しますか?

私は後者をほぼ確信していますが、私の検索に失敗し、ここで十分な質問をしていません。

4

4 に答える 4

8

ドキュメントから:

...ネストされたメソッド呼び出しが多すぎるため、実行スタックがオーバーフローするとスローされます。

スタックのサイズはアーキテクチャに依存し、マシン上でオーバーライドすることもできるため、はい、この値はハードコーディングされていませんが、Windowsでは一般的にかなり静的です。正しく覚えていれば、デフォルトでは1MBのサイズです。

于 2009-09-10T21:59:40.867 に答える
2

あなたの質問に完全に一致するわけではありませんが、以下も参照してください。

管理されたexecutable.netのデフォルトのスタックサイズを変更するにはどうすればよいですか

于 2009-09-10T22:02:07.910 に答える
0

ネストされたメソッド呼び出しが多すぎるために実行スタックがオーバーフローした場合にスローされる例外。このクラスは継承できませんMSDN

このコードをいくつか変更して試しました。私の経験に応じて上記のステートメントを変更します

Framework 4.0 7573 のネストされたメソッド呼び出しが含まれているために実行スタックがオーバーフローしたときにスローされる例外。このクラスは継承できません。

Framework 2.0 7038 のネストされたメソッド呼び出しが含まれているために実行スタックがオーバーフローしたときにスローされる例外。このクラスは継承できません。

于 2012-11-30T15:27:19.937 に答える
0

スタック フレームは、OS のアドレッシング モードによって異なります。x64 は少し大きいスタック フレームを使用していると思います。プロセス空間は x86 よりもはるかに大きくなる可能性があることに注意してください。そのため、RAM とスワップ ファイルのサイズが問題にならない場合は、x64 でより多くのフレームを受け入れるようにスタックを構成できるはずです。

于 2011-04-07T00:59:52.773 に答える