#javascript #python #c #callstack
#javascript #python #c #callstack
Вопрос:
Я пишу статью о концепции стека вызовов и хочу коснуться ограничений стека вызовов на разных языках.
Я знаю, что есть способы узнать, сколько фреймов может быть в стеке вызовов, например:
Python
import sys
print(sys.getrecursionlimit())
Javascript
let count = 0;
const counter() {
count ;
counter();
}
counter();
Я также хотел бы знать то же самое для C. Но мой главный вопрос заключается в том, является ли это число числом, установленным языком, или это число полностью зависит от объема оперативной памяти устройства.
Комментарии:
1. Обычно это не является аспектом языка программирования. Вы имеете в виду языковую реализацию? Я бы подумал, что это решение должно быть принято, поэтому оно должно быть принято теми, кто пишет реализацию, но тогда оно также будет ограничено доступными ресурсами на компьютере.
Ответ №1:
Это зависит от многих факторов, таких как операционная система, устройство и объем оперативной памяти. Во многих скомпилированных языках операционная система позволяет вам увеличивать стек до тех пор, пока ОС не решит, что больше не хочет вам его предоставлять. Во многих встроенных устройствах хакеры намеренно увеличивают стек за пределы ожидаемых пределов, чтобы проникнуть в устройство.