Lua数据结构 — TValue(一)
来源:互联网 发布:数据流程分析总结 编辑:程序博客网 时间:2024/05/22 13:42
作者:罗日健
数据结构的设计,在一定程度上奠定了整个系统的设计,所以决定写一个对Lua主要数据结构的分析文章,本来打算写一篇就好了,但是每个数据类型其实都有点复杂,一篇的话篇幅太长,所以就拆开几篇来写了。
为什么是从TValue说起,TValue是实现Lua弱数据类型的主要数据结构,不但在脚本中的值使用了TValue,连Lua的实现中,很多数据结构也依赖于TValue,TValue一定程度上贯穿了整个Lua。先说一下Lua里面的数据类型:(lua.h :69)
从上面的定义中可以看到,Lua的值类型有9种,其中LUA_TNONE是用于判断这个变量是否等于为空使用的,这个是Lua内部使用的,后面再详细说明。现在来看Lua里面的TValue数据结构:(lobject.h 71-75)
在Lua里面,一个变量使用TValue这个类型来存储的,int tt就是上面宏的类型值(4个字节),而Value则是一个union(8个字节)。在这个union中,其实分工也十分明确:
在Value中,void* p、lua_Number n、int b都是不用回收的值类型,而GCObject* gc则都是需要回收的对象,下面是GCObject数据结构:(lstate.h 133-145)
GCObject也是一个union,存储了一个GCheader,这个GCHeader主要用于GC回收机制使用,GC回收机制超出了这次讨论话题,暂时先忽略。真正存储值的结构是TString、Udata、Closure等等,每个存储数据的结构都会有GCheader,接下来几篇文章将会开始逐个数据类型进行解释。
来自:http://blog.aliyun.com/761?spm=0.0.0.0.eS5aVm
- Lua数据结构 — TValue(一)
- Lua数据结构 — TValue(一)
- Lua解析1 TValue
- lua TValue类型分析
- Lua 5.3 源码分析(二)值 TValue
- lua之table数据结构分析(一)
- .net集合类的研究-哈希表(一)--Hashtable,Dictionary<TKey,TValue>
- .Net集合类的研究-有序集合(一)-SortedList、SortedList<TKey,TValue>
- .net集合类的研究-哈希表(一)--Hashtable,Dictionary<TKey,TValue>
- .net集合类的研究-哈希表(一)--Hashtable,Dictionary<TKey,TValue>
- Lua数据结构 — lua_State(六)
- Lua数据结构 — TString(二)
- Lua数据结构 — Table(三)
- Lua数据结构 — 闭包(四)
- Lua数据结构 — Udata(五)
- Lua数据结构 — lua_State(六)
- Lua数据结构 — Table(三)
- Lua数据结构 — TString(二)
- unity项目
- 深度学习预备课:神经网络
- (4)邮票问题____动态规划
- OSTU
- 第十七周项目四日期结构体
- Lua数据结构 — TValue(一)
- 2014年总结--从业8年来的总结
- 第十七周上机项目六
- 1015. 德才论 (25)
- 3-3-1 循环-完善售票机
- VC 服务程序的编写
- UVA 11300 <中位数定理>
- 视觉研究的前世今生
- 第十七周项目四(2)日期结构体