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