В Java будет стек, который говорит StackOverflowError
, и вся система не будет разбиваться, только программа.Что обычно происходит в C из-за переполнения стека?
В C Я знаю, что индекс массива за пределами границ вызовет ошибку сегментации. Это то же самое для переполнения стека в C, и также будет ошибка сегментации, например, такой же тип ошибки для аналогичной проблемы?
Я не тестирую сознательное бесконечное спасение на C, чтобы видеть, что происходит, потому что я не знаю последствий.
Или иногда что-то гораздо хуже, и переполнение стека в C может привести к сбою операционной системы и принудительному возврату энергии в цикл? Или, что еще хуже, привести к необратимому повреждению аппаратного обеспечения? Как плохие эффекты могут иметь ошибку переполнения стека?
Кажется очевидным, что защита лучше на Java, чем на C. Насколько она лучше в C, чем в коде сборки/машины, или это практически такая же (отсутствие) защита в C как сборка?
Что заставляет вас думать, что защиты нет? Вы когда-нибудь испытывали ошибку сегментации? Что вы видели? – Kayaman
Нет, ничего плохого не должно произойти с ОС. Современные процессоры и ОС не позволяют программе случайно повлиять на ОС или другие программы. – alain
В типичной современной операционной системе (Linux, Windows, другие Unix и т. Д.) Программа C (или любая другая программа на любом языке) обычно не может привести к сбою операционной системы. Процесс fautling просто сбой, и все. –