[英]How do I clean everything in lua stack from C++?
尽管我通过调用lua_getglobal
来尽可能地减少了该错误,但长期来看还不够好。 那么,有谁知道我该如何清理lua堆栈中的所有内容以防止内存管理问题?
- -编辑 - -
从我刚刚做的实验中, lua_settop
会将表清理为给定值。 但是,当我知道我要删除多少个项目时, lua_pop
更有效吗?
一个简单的lua_settop(L, 0);
应该可以。
一个简单的尽管有个例子,但示例说您有一个lua_CFunction
:
int foo(lua_State *L)
{
// marshal some random data
int bar = luaL_checknumber(L, 1);
const char *baz = luaL_checkstring(L, 2);
// do foo's task
// completely clear the stack before return
lua_settop(L, 0);
return 0;
}
这是人为设计的,因为如果VM调用了foo
则不需要清理。 但是,如果您有直接调用foo
C ++代码,则可能有必要。 无论如何希望这可以说明其调用上下文。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.