【笔记】《Redis设计与实现》chapter2 简单动态字符串

------------恢复内容开始------------

2.1 SDS的定义

struct sdshdr{
    // 记录buf数组中已使用字节的数量
    // 等于SDS所保存字符串的长度(不含'\0')
    int len;
    
    // 记录buf数组中未使用字节的数量
    int free;
    
    // 字节数组,用于保存字符串
    char buf[];
}

2.2 SDS 与 C 字符串的区别

常数复杂度获取字符串长度

与C字符串不一样,SDS在被链接时可以通过结构中记录的len字段直接获取长度信息,防止连接字符串溢出时,也可以通过这一字段直接调整缓冲区长度

减少修改字符串时带来的内存重分配次数

------------恢复内容结束------------

posted @ 2021-04-20 11:24  汉森伯逸  阅读(49)  评论(0)    收藏  举报