С StackOverflowException условия, которые должны быть выбраны, жестко запрограммированы или зависят от машины, на которой работает код?
Я почти уверен в последнем, но потерпел неудачу в своих поисках и не задаю здесь достаточно вопросов.
С StackOverflowException условия, которые должны быть выбраны, жестко запрограммированы или зависят от машины, на которой работает код?
Я почти уверен в последнем, но потерпел неудачу в своих поисках и не задаю здесь достаточно вопросов.
Из документации:
... вызывается, когда стек выполнения переполняется, потому что он содержит слишком много вызовов вложенных методов.
Поскольку размер стека зависит от архитектуры и даже может быть переопределен на машине, да, это значение не является жестко запрограммированным, хотя в Windows оно обычно довольно статично. Если я правильно помню, по умолчанию он имеет размер 1 МБ.
Хотя это и не идеально подходит для вашего вопроса, см. Также:
Как изменить размер стека по умолчанию для управляемого исполняемого файла .net
Кадры стека будут различаться в зависимости от режима адресации вашей ОС. Я считаю, что x64 использует немного большие фреймы стека. Имейте в виду, что пространство процесса может расти намного больше, чем на x86, поэтому в целом вы должны быть в состоянии настроить свой стек для приема большего количества кадров на x64, если ОЗУ и размер файла подкачки не являются проблемой.
Исключение, возникающее при переполнении стека выполнения из-за того, что он содержит слишком много вызовов вложенных методов. Этот класс не может быть унаследован.MSDN
Я попробовал этот код с некоторыми изменениями. Я изменяю приведенное выше утверждение в соответствии с моим опытом
Framework 4.0 Исключение, возникающее при переполнении стека выполнения, так как он содержит 7573 вызова вложенных методов. Этот класс не может быть унаследован.
Framework 2.0 Исключение, возникающее при переполнении стека выполнения, так как он содержит 7038 вызовов вложенных методов. Этот класс не может быть унаследован.