佚名通过本文主要向大家介绍了lua的userdata的使用,lua light userdata,lua userdata,userdata,userdata是什么意思等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:lua中userdata和gc的使用?
描述:
解决方案1:
描述:
求教一个问题:定义了一个new函数,可以调用成功:
static int auto_new(lua_State *L)
{
MyClass **c = (MyClass**)lua_newuserdata(L, sizeof(MyClass*));
*c = new MyClass();
(*c)->a = 100;
luaL_getmetatable(L, "luatest.test");
lua_setmetatable(L, -2);
return 1;
}
然后在__gc的时候,调用这个函数
static int auto_gc(lua_State *L)
{
// luaL_getmetatable(L, "luatest.test");
MyClass *c = (MyClass *)lua_touserdata(L, 1);
if( c )
{
delete c;
}
return 0;
}
发现gc的时候,userdata数据不对,删除时异常,这是为何?
解决方案1:
私以为,应该是MyClass** c = (MyClass**)lua_touserdata(L, 1);
MyClass *c = (MyClass *)lua_touserdata(L, 1);
原来是这儿错了,应该 MyClass c = (MyClass)lua_touserdata(L, 1);