标签:obj 数据结构 byte ade val typedef sign 设计 size
下面的结构体是lua中所定义的table
typedef struct Table {
CommonHeader;
lu_byte flags; /* 1<<p means tagmethod(p) is not present */
lu_byte lsizenode; /* log2 of size of 'node' array */
unsigned int alimit; /* "limit" of 'array' array */
TValue *array; //数组
Node *node; // 哈希表
Node *lastfree; // 辅助寻找冲突节点的指针
struct Table *metatable;
GCObject *gclist;
} Table;
众所周知,lua的table很强大,可以当数组也可以当哈希表,这得益于其Table结构的设计与实现。
从上面可以看到,array
作数组,node
作哈希表。
array
的长度一般会相对较小,因为对key
进行哈希后的结果比较分散。所以大都保存在node
中。array
的长度一般会较大,因为key
其实就是数组的下标。所以都在array
中。标签:obj 数据结构 byte ade val typedef sign 设计 size
原文地址:https://www.cnblogs.com/xcw0754/p/11416545.html