7 Réponses :
Fondamentalement, la seule façon dont je sais pour libérer toute la pile Lua appelle Lua_Close sur l'instance Lua_State. p>
Pourquoi voulez-vous faire cela? P>
Si vous devez supprimer tous les éléments de la pile Lua, vous devez appeler Accepte tout index acceptable, 0 et définit la pile haut sur cet index. Si le nouveau sommet est plus grand que l'ancien, les nouveaux éléments sont remplis de nil. Si l'index est 0, tous les éléments de pile sont supprimés. p>
blockQuote>
Cela soumettrait tous les éléments de la collecte des ordures. Appelez Notez que (AFAIK) Vous ne pouvez pas vous libérer de l'espace, alloué à la pile elle-même - sauf si, bien sûr, vous appelez lua_settop (L, 0) code>. Pour quote manuel : p>
void lua_settop (lua_state * l, int index); code> p>
lua_gc (lua_gc_collect) code> après la collecte des ordures. Si vous avez vraiment besoin de collecter toutes les ordures collectables, appelez-la dans une boucle, jusqu'à ce que la valeur, renvoyée par
lua_gc (lua_gccount) code>, resterait la même chose. P>
lua_close () code>. p>.
Je pense que vous voulez dire: Lua_settop (L, 0).
Si vous avez mis par ex. 5 éléments sur la pile dont vous n'avez plus besoin, vous pouvez les supprimer avec lua_pop a >: lua_pop(l, 5) -- removes the 5 topmost elements from the stack
Dans certains cas, vous n'êtes pas obligé. Par exemple, dans une fonction, vous pouvez appuyer sur 5 valeurs, puis renvoyez 3, pour dire que vous retournez 3 valeurs. Les valeurs supplémentaires 2 seront libérées automatiquement, car la taille de la pile est ajustée à ce que vous avez dit. (Cela évite les erreurs où vous dites que vous retournez un nombre différent de valeurs que vous avez réellement poussé.) P>
Si vous utilisez une table ou une matrice en tant que stockage variable, vous pouvez définir la clé sur nul en faisant
a[variable key]=nil
lua_settop (l, 0); code> devrait fonctionner.
Appelez lua_gc () alors. Cela ne libérera pas tout l'espace,
Toute la pile entière forte> sera effacée lorsque vous fermerez l'état Lua. P>
Pourquoi le bowvote? Ceci est définitivement lié à la programmation et je ne sais aucun problème avec la langue utilisée ou quoi que ce soit.
Qu'essayez-vous d'atteindre?