Вопрос довольно простой. Это был вопрос, который я получил на экзамене по программированию в университете. Теперь я нигде не мог найти ответ. Кто-нибудь из вас, ребята, имеет представление о том, какое максимальное количество AR в стеке? В с ++.
запись активации (ака кадр стека) содержит хотя бы адрес возврата функции. Например, x86 CALL
инструкция помещает адрес возврата в стек, RET
выскакивает Итак, теоретический максимум max_stack_size / sizeof(void(*)())
, Большинство функций используют аргументы и локальные переменные, которые также могут занимать стек вызовов, а также стеки защиты канареек.
Вы можете узнать max_stack_size
с ulimit -s
команда bash или программно с getrlimit(RLIMIT_STACK, ...)
.
Других решений пока нет …