C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■85043 / )  Re[3]: C# MVC でのスタックオーバーフロー
□投稿者/ WebSurfer (1299回)-(2017/09/06(Wed) 19:21:00)
No85041 (はな さん) に返信

私のレスを全文引用してますが、引用は必要最小限にとどめてください。見難くなります。

> 参照するDLLは二つあり、片方はスタックオーバーフローせず、片方はスタックオーバーフローします。
> xxx.dll・・・オーバーフローしてしまう。スタック回数は1000回程度だが、300ほどでオーバーフロー。
> yyy.dll・・・オーバーフローしない。スタック回数10000回以上

スタックオーバーフローとなるのはどのように確認したのでしょう?(失礼ながら、ホントに
スタックオーバーフルーなのかちょっと疑ってます)

「スタック回数」というのは何なのですか? メソッドの再帰呼び出しの深さのようなもので
深くなるほど(回数に比例して)スタックメモリの消費量が増えるのですか?

エラーが実際にスタックオーバーフローで、「スタック回数」に比例してスタック消費量が増え
るということであれば、自分が想像できるのは、

> この二つのDLLをコンソールアプリケーションから参照した場合にはどちらもスタックオーバーフローしません。

ASP.NET Web アプリとコンソールアプリでは使用できるスタックのサイズが違うからだと思いま
す。それ以外に違いが出る原因は自分は思いつきません。

前者は 256KB という記事を見つけました。

Stack sizes in IIS – affects ASP.NET
https://blogs.msdn.microsoft.com/tom/2008/03/31/stack-sizes-in-iis-affects-asp-net/

後者は 1 MB だと思います。

Thread Stack Size
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686774(v=vs.85).aspx

> xxx.dllとyyy.dllでなにが違うのか?どこを調べるべきか?

「スタック回数」の 1 回あたりのスタック消費量が違う(xxx.dll > yyy.dll)からではないかと
思います。そこを調べてみては?

以上は自分の想像です。これ以上のことは、今提供されている情報ではわかりません。

返信 編集キー/


管理者用

- Child Tree -