c++ 对象注册到lua 内存管理 tolua_cclass 中的内存释放 记一次闪退bug查找 此次闪退 可能发生在任何时机 难以查找
首先要了解lua的垃圾回收机制,lua中的垃圾回收机制是每隔一段时间清除不再被引用的对象,也就是说一个对象如果不再被使用就会在下次的gc中被回收掉,这个不需要我们管理,是lua中的自动回收机制。接下来看一下c++注册到lua的接口: TOLUA_API void tolua_cclass (lua_State* L, const char * lname, const char * name, const char * base, lua_CFunction col) { char cname[128] = "const "; char cbase[128] = "const "; strncat(cname,name,120); strncat(cbase,base,120); mapinheritance(L,name,base); mapinheritance(L,cname,name); mapsuper(L,cname,cbase); mapsuper(L,name,base); lua_pushstring(L,lname); push_collector(L, name, col); /* luaL_getmetatable(L,name); lua_pushstring(L,".collector"); lua_pushcfunction(L,col); lua