字符串类型底层结构
简单动态字符串
结构
- free 表示该动态字符串中剩余长度
- len 表示动态字符串中,已使用的长度。发现
'\0'
结束长度计算
结构带来的特征
- 由于 Len 记录动态字符串长度,因此 获取字符长长度为 O(1),
- free 通过修改free即可实现字符串动态扩增。 扩增的策略(即扩增的次数取决于具体的扩容机制)
扩容
自动扩容机制,杜绝缓冲区溢出
空间预分配
- 增加 buf 中的字段后,长度小于 1024*1024 (也就是1M),那么 free 的大小等于 Len
- 否则,free = 1M ( 也就是 1024*1024 字节数)
缩减
缩减,增加 free 的大小
兼容部分 C字符串操作
- 常见的获取 len,free
- 去除字符串中的字符
- 仅保留字符串中的 range区间字符
参考
《Redis 设计与实现》