lua记忆管理

我如何释放lua堆栈?

解决方法

为什么要这样做?

如果你需要删除Lua栈中的所有元素,你应该调用lua_settop(L,0).引用manual

void lua_settop (lua_State *L,int index);

Accepts any acceptable index,or 0,and sets the stack top to this index. If the new top is larger than the old one,then the new elements are filled with nil. If index is 0,then all stack elements are removed.

这将使堆栈中的所有元素都进行垃圾回收.之后调用lua_gc(LUA_GC_COLLECT)进行垃圾收集.如果您真的需要收集所有可收集的垃圾,请在循环中调用它,直到lua_gc(LUA_GCCOUNT)返回的值保持不变.

请注意,(AFAIK)您不能释放空间,分配给堆栈本身 – 除非您调用lua_close().

相关文章

1.github代码实践源代码是lua脚本语言,下载th之后运行thmai...
此文为搬运帖,原帖地址https://www.cnblogs.com/zwywilliam/...
Rime输入法通过定义lua文件,可以实现获取当前时间日期的功能...
localfunctiongenerate_action(params)localscale_action=cc...
2022年1月11日13:57:45 官方:https://opm.openresty.org/官...
在Lua中的table(表),就像c#中的HashMap(哈希表),key和...