SDS的定义
源码位置
sds.h/sdshdr
主要成员
1.字节数组:char buf[]
2.sds保存的字符串的长度:int len
3.buf数组未使用的字节的数量:int free
SDS相比C字符串的优势
1.常数复杂度获取字符串长度
直接使用len属性获取长度,为常数复杂度。
2.可以杜绝缓冲区溢出
SDS自动做空间扩展:sds的api要修改sds时,会检查其空间是否满足要求,如果不满足会进行空间扩展,扩展之后再进行操作。
3.可以减少内存重分配次数
空间预分配:修改(扩展)后len=free或者free=1M
惰性空间释放:缩短操作,不会立即释放缩短后多出来的空间
4.二进制安全
可以保存图片、音频、视频、压缩文件等等的二进制文件
5.兼容C字符串
C字符串的诸多函数SDS依然可以使用
网友评论