Обработка StackOverflow

А можно уточнить, какой вопрос мы обсуждаем?

Оффтоп

Я к нему вообще не обращался, а среагировал на его неуместное ёрничание в свой адрес, которое вам почему-то понравилось. Мне все равно где он живет/работает и сколько там снега.

Очень странное тут иногда общение происходит. Некоторых так и подначивает кому-нибудь съязвить и поймать лайки – академический форум, не хухры-мухры!..

Вот про потоки это очень полезное уточнение – по делу, спасибо.

Таким образом, подытоживая.

В .NET на стек выделяется 1 мб и изменить это нельзя.

Если создать новый поток, то можно это задать.

Всё. Больше никакого ответа на этот вопрос не существует.

Как и то, что в Ростове выпадает мало снега. Подчёркиваю, что я это приводил для аллегории. Если кого-то это обидело - извините. Но это ровно вещи одной природы - 1 мб на стек в .NET и в Ростове мало снега.

Упоминание в некоторых контекстах про наших школьников носит косвенно личностный характер. Упоминание про то, что кому-то всё равно где кто-то работает также носит косвенно личностный характер. Ёрничанье по поводу того что стек более 1 МБ мало нужен - замечу - не носит личностного характера. Это у нас на форуме почему-то принято на абсолютно нейтральные сообщения кричать “хамство, хамство!”. Ещё раз вчитайтесь. Ответ не носит личностного характера, а говорит о том, что это вещь мало нужная. А упоминание " Мне все равно где он живет/работает" о человеке в третьем лице носит личностный характер. Пожалуйста, разберитесь.

Ерничанье нормально если оно не затрагивает личность. Более того, оно в данном случае выражает мнение - это не нужно.

Каким образом в Паскале c .NET 4+ можно перехватывать StackOverflowException.

Вот в IDE же эта ситуация с переполнением сейчас обрабатывается как-то: “A new guard page for the stack cannot be created”, а в консоли уже пишет “Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека”.

Кто-нибудь может разъяснить детали такой реализации, желательно с примером кода на Паскале?

Чисто из любопытства: те, кто живёт в Ростове-на-Дону всегда называют свой город полностью? Или просто Ростовом?

Не знаю. У меня в IDE при запуске по F9 пишет Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека

А разве такое окошко при этом еще не появляется?

Clipboard01

В любом случае, переполнение стека под .NET перехвачено. Вопрос – как это сделать на Паскале в своей программе?

Лично у меня - нет.

А у меня вообще:

У меня просто вывод сообщения об ошибке. Win7.

Между собой - Ростовом. Если возможны разночтения (неясно из контекста), особенно с иногородними - полным названием. Второй Ростов (точнее, первый) - это Ростов Великий, в Ярославской области.

1 лайк

Пример алгоритма в студию. Только не те, в которых на стеке создается массив из сотни элементов.

Только в PascalABC.NET это невозможно.

Отчего же не рассказывает? Сделать надо так, как делает любой компилятор, обеспечивающий рекурсию: использовать стек для локальных данных. А рекурсивный вызов заменить на переход к началу процедуры.

Я это видел и это дико.

А что именно дикого?

Цитата из справочной системы:

Ниже приводятся некоторые классы исключений, определенные в пространстве имен System и являющиеся производными от класса System.SystemException: System.OutOfMemoryException - недостаточно памяти для выполнения программы; System.StackOverflowException - переполнение стека (как правило, при многократных вложенных вызовах подпрограмм);

Можно, конечно, заняться крючкотворством и сказать, что тут не говорится от том, что Оно работает. Но это же все равно дичь. Вот второкурсник поверил, что раз упомянуто, то и работает, но случился облом. Он очень страдал.

Да, согласен с Вами в том, что здесь наблюдается некая неопределённость, желательно её разрешить, указав в справке какие конкретно исключения (не-)могут быть перехвачены.

Скорее, наоборот - какие не могут быть перехвачены, ибо перехватываемых исключений в самих лишь встроенных библиотеках .NET много больше неперехватываемых.

Спасибо, поправил пост.

2 лайка