lua记忆管理

前端之家收集整理的这篇文章主要介绍了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().

猜你在找的Lua相关文章