2009-05-29 13 views
1

est-ce qu'un langage ou une plate-forme n'a pas une taille de pile fixe et n'est donc pas facile à déborder? Je me souviens d'utiliser C sur UNIX, la pile était difficile à déborder alors qu'au temps de Win 3.1, la pile était très facile à déborder.quelle langue/plate-forme n'a pas de taille de pile fixe?

+0

question similaires: http://stackoverflow.com/questions/53827/check-available-stack-size-in-c –

Répondre

2

Si par « pile » vous voulez dire une pile ancienne, la plupart des langages font: Java a une classe stack limitée seulement par la mémoire. Plus probablement vous voulez dire la pile des appels, auquel cas le plus grand exemple que je peux penser est Stackless Python, qui, à mon sens, utilise une pile à mémoire limitée python pure (comme Java) comme pile d'appel pour le code Python, plutôt que utiliser la pile d'appels de C

1

c'est une question de pratique vs théorique. la pile d'un interprète Lisp est limitée que par la mémoire disponible

dans le schéma et d'autres langues qui mettent en œuvre récursion queue, une queue fonction récursive aurait une pile infinie

+0

Une fonction récursive avec l'optimisation itérative associée ne va même pas sur la pile, autant que je sache. Si vous définissez «pile» comme étant lié aux fonctions appelantes, en tant qu'abstraction, cette déclaration est vraie, mais je n'utiliserais pas cette abstraction, car ce n'est pas particulièrement utile. Je n'ai pas eu l'impression que cette définition était normale non plus. –

+0

ne peut pas C sur UNIX/Solaris ont également une taille de pile limitée uniquement par la mémoire physique? –

+0

Je rappelle que C avait/avait une taille de segment de pile qui est un paramètre du noyau – jottos

0

Les systèmes Mac 6, 7 et 8 avaient des piles d'appels qui pouvaient se développer sans limite artificielle.

Il n'a aucun moyen de détecter une garantie pile - collision en tas, et pourrait vous mettre dans toutes sortes de problèmes de cette façon ...