lua中malloced userdata的__gc方法?

时间:2013-12-24 00:12:12

标签: c lua

我在{c}中malloc了一个用户数据。我应该把它放在哪里?

我应该为该用户数据编写__gc方法,并在其中free吗?如果是的话,它不是免费的,因为垃圾收集器也会释放它吗?

2 个答案:

答案 0 :(得分:3)

只有完整的userdata可以使用gc方法,并且必须使用lua_newuserdata创建完整的userdata。

Light userdata只是C空间中的指针,因此必须由C主机管理。 Light userdata不能有gc方法。

答案 1 :(得分:1)

Lua的垃圾收集器不知道你为malloc分配了一些内存,所以它不会为你释放它。

Lua将释放Lua分配的内存。您必须释放您分配的内存。