1,sds定义
sds是simple dynamic string的缩写,意为简单动态字符串。
定义为:
struct sdshdr {
long len; //记录buf数组已使用的字节数量,即sds保存的字符串的长度,不含'\0'
long free; //记录buf数组中未使用字节的数量
char buf[0]; //字节数组,用于保存字符串
};
如图:
len:4,表示这个数组保存的字符串的长度是4。
free:4,表示这个数组的未使用空间是4。
buf:是一个字符数组,前4个字节保存的是字符'L'、‘u’、‘o’、‘L’,最后一个字节保存的是字符串结束标识‘\0’。
sds遵循C字符串以空字符结尾的惯例,保存空字符的1字节不计算在sds的len中,并且为空字符分配额外的1字节空间,以及添 加空字符到字符串末尾等操作,是由sds函数自动完成的。这样遵循空字符结尾这一惯例的好处是,sds可以直接重用一部分c字符串函数库里面的函数。
2,sds与c字符串的区别
既然sds中保存的也是字符串,为什么不直接使用字符串,而还要封装成一个结构体呢?
<