我正在开发一个使用 Kahlua 进行嵌入式 Lua 脚本编写的 Java 应用程序。在调用大量函数后,它总是因堆栈溢出而崩溃...我需要做些什么来从堆栈中删除未使用的调用帧吗?
最佳答案
在标准 Lua 中,您可以使用 lua_pop
函数从 Lua 堆栈中删除项目。参见 this answer有关此用法的提示。
如果您重复调用您的代码,最简单的做法是在处理之前存储堆栈的高度并在之后恢复它:
int top = lua_gettop(L);
... /* some processing involving the stack*/
lua_settop(L, top);
现在,我不确定如何在 Kahlua 中实现这一目标。但是在源代码中我看到了 LuaCallFrame.getTop()
和 LuaCallFrame.setTop()
所以代码应该是相似的。
关于java - Lua 堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4652522/