01 2015 档案

摘要:rehash是根据当前表格中的数据重新计算一个比较函数的:数组大小和hash表大小,重新申请空间,并重新插入原有数据: 1 static void rehash (lua_State *L, Table *t, const TValue *ek) { 2 int nasize, na; 3 ... 阅读全文
posted @ 2015-01-17 00:23 #shany 阅读(657) 评论(0) 推荐(0)
摘要:通过luaH_new创建的Table开始实际上是一张空表,只是包含了Table本身的数据 结构。创建完以后需要添加元素,添加到函数为:luaH_set,该函数在设置前会根据key的值去获取对应的Value,如果能找到,则直接设置,如果找不到,则需要申请一个位置来存放(Key,Value)。1 TVa... 阅读全文
posted @ 2015-01-16 23:47 #shany 阅读(1940) 评论(0) 推荐(0)
摘要:table(lobject.h)的结构定义: 1 // TKey结构是一个链表结构,用来存储hash相同 2 // 的所有key,value对结构。 3 typedef union TKey { 4 struct { 5 TValuefields; // key值 6 ... 阅读全文
posted @ 2015-01-10 20:55 #shany 阅读(721) 评论(0) 推荐(0)
摘要:lua的堆栈中存放的是通用变量,通用变量实际上就是一个union内存块,根据不同的类型,采用不同的组织方式,看一下通用类型的相关定义,截取了lobject.h相关代码,从代码上看,不太清楚numfield为什么会有两个相关定义。堆栈中可以根据情况分为一下几种类型:1、双精度浮点数:double d_... 阅读全文
posted @ 2015-01-06 23:36 #shany 阅读(1761) 评论(0) 推荐(0)