多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 2.6.1 压缩列表的结构 由一系列连续的内存块组成的顺序型数据结构,包括: `zlbytes, zltail, zllen, entry1, entry2, ..., entryN, zlend` 以下是详细说明: 属性 | 类型 | 长度 | 用途 ---- | ---- | ---- | ---- zlbytes | uint32_t | 4字节 | 记录整个压缩列表占用的字节数:在对压缩列表进行内存重分配,或者计算zlend的位置时使用 zltail | uint32_t | 4字节 | 记录压缩列表尾结点距离距离压缩列表起始地址有多少字节,通过该偏移量,程序可以直接确定表尾结点的地址 zllen | uint16_t | 2字节 | 记录了结点数量,当小于UINT16_MAX(65535)时,就是实际结点数,当等于UINT_MAX时,需要遍历压缩列表计算出 entryX | 列表结点 | 不定 | 压缩列表包含的各个结点,结点的长度由j结点保存的内容决定 zlend | uint8_t | 1字节 | 特殊值0xFF(十进制255),用于标记压缩列表的末端 ---- 以下是一个总长为80字节,包含3个结点的压缩列表,其中表尾结点距离压缩列表起始地址60字节: zlbytes | zltail | zllen | entry1 | entry2 | entry3 | zlend ---- | ---- | ---- | ---- | ---- | ---- | ---- 0x50(80)| 0x3c(60) | 0x03(3) | - | - | - | 0xFF(255)