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

Était-ce utile?

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 est nil 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top