如图,总体buffer可分为3部分:


size:记录
data块的字节个数,从0开始编号(size = 0代表data块为空而不是buffer为空),不包括前面的
size
pos
size +
pos 统称
header)。

根据size的大小(也就是data块的字节数)可将buffer分为大块与小块,其中size >= 0x8000 为大块,否则为小块。
(这里有个问题:大小块size都是一个范围,我们要怎么快速来确定buffer是大块还是小块呢?这个问题答案我们放到后面再细说)


pos:记录
data块的读写指针,也是从0开始编号(这里
pos既记录读又记录写操作的位置,本身是1个指针,
存不了两条信息,所以我们需要自己手动调整
pos


data:存储buffer里面的实际数据,可以是
int,ulong,str等多种类型