##数据类型
lightuserdata 指针地址,由c管理生命周期。
userdata 地址,交由lua的gc来控制。
##闭包
#表现
1)函数内部可以访问函数外部的变量
2)lua文件是一个匿名函数
#实现
c函数以及绑定在c函数上的upvalues
#用lua_pushcclosure来创建c闭包
#通过lua_upvalueindex伪索引来获取上值
##元表
1)只有table和userdata对象有独自的元表,其他数据类型只有类型元表。
2)只有table可以在lua中修改设置元表。
3)userdata只能在c中修改设置元表。
##虚拟栈
1)栈上的都是lua类型的值。
2)lua调用c的函数都得到一个新的栈。
3)c调用lua,每一个协程都有一个栈,没有显式创建那么就是主协程上一个栈。
##注册表
1)预定义的表,用来保存任何c代码想保存的lua值。
2)使用LUA_REGISTRYINDEX来索引。
3)用于c写的库之间共享数据。