Учитывая программу C с бесконечной рекурсией:
int main() {
main();
return 0;
}
Почему это приведет к переполнению стека. Я знаю, что это приводит к поведению undefined в С++ из следующего потока Является ли эта бесконечная рекурсия UB? (и как сторона node нельзя вызвать main()
в С++). Однако valgrind говорит мне, что это приводит к переполнению стека:
Qaru in thread 1: can't grow stack to 0x7fe801ff8
а затем, наконец, программа заканчивается из-за ошибки сегментации:
==2907== Process terminating with default action of signal 11 (SIGSEGV)
==2907== Access not within mapped region at address 0x7FE801FF0
Это также поведение undefined в C, или это должно привести к переполнению стека, а затем почему это приводит к переполнению стека?
изменить
1 Я хотел бы знать, что бесконечная рекурсия разрешена в C?
2 Если это приведет к переполнению стека? (был достаточно дан ответ)