Lua C API userdata 和 light userdata
填半年前挖的坑。分享 Lua C API 中的 userdata 和 light userdata。 在编程过程中,经常会需要给一块数据分配一个唯一句柄,通过句柄能够读取或者操作这块数据。原因主要有: 数据内聚性很强,封装在一起方便传递,减少参数数量。 隐藏数据的内部结构,通过 API 提供操作接口。 减少数据拷贝。 最典型的就是 C 中的指针了。但句柄并不一定就必须是指针,比如 Linux 系统中的 fd 可以当作是 IO 设备的句柄。 在 Lua C API 中提供了 userdata 和 light userdata 可以让 C 返回一个句柄给 Lua,而 Lua 可以将句柄再通过在 C 中注册的方法传回 C。 Lua Userdata…