Luajit augmenter pile / taille de segment
Question
Je continue à obtenir une erreur de dépassement de mémoire dans luajit. Comment puis-je augmenter la taille de la pile ou tas?
Merci
La solution
Je ne l'ai pas utilisé moi-même luajit, autre que des exemples de jouets. Mais puisque personne d'autre n'a fourni aucune réponse encore ...
De la documentation , luajit dépend des extensions Coco à la bibliothèque standard coroutine. L'un des changements introduits par Coco est que les fonctions qui créent une nouvelle coroutine prennent maintenant un argument optionnel qui spécifie la taille de la pile.
Citant les docs Coco:
coro = coroutine.create(f [, cstacksize])
func = coroutine.wrap(f [, cstacksize])
L'argument optionnel
cstacksize
spécifie la taille de la pile de C à allouer pour la coroutine:
- A taille de la pile par défaut est utilisé si
cstacksize
est pas donné ou estnil
ou zéro.- Pas de pile C est alloué si
cstacksize
est-1
.- Toute autre valeur est arrondie à la taille minimale (à savoir l'utilisation
1
pour obtenir la taille minimale).
Il y a aussi la nouvelle coroutine.cstacksize([newdefault])
de fonction qui définit la taille de la pile par défaut C, ainsi que des modifications correspondantes à l'API C.
En outre, il existe de nombreuses options de configuration de compilation dans la version luajit de luaconf.h. Il peut y avoir quelque chose là-dedans qui définit la valeur par défaut. Sous Windows, il y a aussi un paramètre lien temps pour la pile de base de l'exécutable, fixé par Link.exe de MSVC via la déclaration STACKSIZE dans le fichier .DEF de l'application.