какой язык / платформа не имеет фиксированного размера стека? - PullRequest
1 голос
/ 29 мая 2009

Разве у какого-либо языка или платформы нет фиксированного размера стека, и поэтому его нелегко переполнить? Я помню, что при использовании C в UNIX стек было трудно переполнить, а во времена Win 3.1 стек было очень легко переполнять.

Ответы [ 3 ]

2 голосов
/ 29 мая 2009

Если под "стеком" вы подразумеваете какой-либо старый стек, то в большинстве языков - в Java класс stack ограничен только памятью. Скорее всего, вы имеете в виду стек вызовов, и в этом случае самый большой пример, который я могу придумать, - это Stackless Python , который, как я понимаю, использует в качестве вызова стек с ограниченным объемом памяти (как Java) стек для кода Python, а не использование стека вызовов C.

1 голос
/ 29 мая 2009

это вопрос практического против теоретического. стек интерпретатора lisp ограничен только доступной памятью

в схемах и других языках, реализующих хвостовую рекурсию, хвостовая рекурсивная функция будет иметь бесконечный стек

0 голосов
/ 29 мая 2009

Mac Systems 6, 7 и 8 имели стеки вызовов, которые могли расти без искусственного ограничения.

У него также нет гарантированного способа обнаружения столкновения стека и кучи, и вы можете получить все возможные неприятности таким образом ...

...