Suppose the following situation:
typedef struct rgb_t {float r,g,b} rbg_t;
rgb_t* rgb(r,g,b) {
rgb_t* c = malloc(sizeof(rgb_t));
c->r=r;
c->g=g;
c->b=b;
return c;
}
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;
}
When the L_rgb function is called from Lua, two distributions occur. Lua allocates new user data, and the rgb constructor function allocates for the structure. What happens to userdata when a variable goes out of scope in Lua? If this is garbage collection, then what happens to the distribution of the structure?
source
share