struct sdshdr
{
//记录buf中已经使用的字节的数量
//等于SDS所保存的字符串的长度
int len;
//记录buf数组中未使用的字节的数量
int free;
//字节数组,用于保存字符串(二进制的数据,不仅仅是字符串)。
char buf[];
}
1. SDS与C字符串的区别
-
O(1)的复杂度获取字符串长度
-
杜绝缓冲区溢出
-
减少修改字符串时带来的内存重分配次数
3.1 空间预分配3.2 惰性空间释放
-
二进制安全
通过len字段而不是‘\0’来判断是不是结束。这样的话,不仅可以保存文本,也可以保存二进制数据 -
兼容部分c字符串函数
可以使用部分<string.h>库中的函数