假設以下情況:的Lua:垃圾收集用戶數據+
typedef struct rgb_t {float r,g,b} rbg_t;
// a function for allocating the rgb struct
rgb_t* rgb(r,g,b) {
rgb_t* c = malloc(sizeof(rgb_t));
c->r=r;
c->g=g;
c->b=b;
return c;
}
// expose rgb creation to lua
int L_rgb (lua_State* L) {
rgb_t** ud = (rgb_t **) lua_newuserdata(L, sizeof(rgb_t *));
*ud = rgb(lua_tonumber(L,1),lua_tonumber(L,2),lua_tonumber(L,3));
return 1;
}
當L_rgb功能從Lua稱爲兩個撥款發生。 Lua分配新的userdata併爲結構分配rgb構造函數。當變量超出Lua中的作用域時,userdata變量會發生什麼變化?如果它是垃圾收集結構的分配會發生什麼?
方法2將減輕你跟蹤分配 - 在Lua錯誤和堆棧倒回上,Lua的GC仍然會根據需要跟蹤和釋放代碼塊。 – u0b34a0f6ae 2010-08-27 14:54:36
有沒有可以幫助你的變化:http://stackoverflow.com/questions/41080633/can-i-load-additional-functions-in-base-open-without-breaking-lua-state? – displayname 2016-12-12 00:31:29