lightuserdata

转自lua程序设计第二版

light userdata轻量级userdata
一种表示C指针的值(即void *),由于是一个值,所以不用创建它。要将一个轻量级userdata放入栈中,只需调用lua_pushlightuserdata
void lua_pushlightuserdata(lua_State *L,void *p);

轻量级userdata不是缓冲,而是一个指针而已,没有元表,就像数字一样,轻量级userdata无需受垃圾收集器的管理。

有时会将轻量级userdata当做一种廉价的完全userdata来使用。但这种做法并没有太大意义。首先使用轻量级userdata时用户必须自己管理内存,因为轻量级userdata不属于垃圾收集的范畴。
完全userdata的开销并不比轻量级userdata打多少。它们只为分配内存增加了一些malloc的开销。

轻量级userdata的真正用途是相等性判断。一个完全userdata是一个对象,它至于自身相等。
一个轻量级userdata则表示了一个C指针的值,因此,它与所有表示同一个指针的轻量级userdata时相等的,可以将轻量级userdata用于查找lua中的C对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值