我在{c}中malloc
了一个用户数据。我应该把它放在哪里?
我应该为该用户数据编写__gc
方法,并在其中free
吗?如果是的话,它不是免费的,因为垃圾收集器也会释放它吗?
答案 0 :(得分:3)
只有完整的userdata可以使用gc方法,并且必须使用lua_newuserdata
创建完整的userdata。
Light userdata只是C空间中的指针,因此必须由C主机管理。 Light userdata不能有gc方法。
答案 1 :(得分:1)
Lua的垃圾收集器不知道你为malloc分配了一些内存,所以它不会为你释放它。
Lua将释放Lua分配的内存。您必须释放您分配的内存。