🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 2.1.2 sds与C字符串的区别 区别 | sds | C字符串 ---- | ---- | ---- 常数时间获取长度 | O(1) | O(N) 杜绝缓冲区溢出 | 操作中申请内存 | 内容可能被意外修改 减少修改字符串时带来的内存重分配 | 空间预分配,惰性空间释放 | 修改N次则重分配N次 二进制安全 | 可存储二进制数据,如图像、音频 | 只能保存文本 兼容部分`<string.h>` | `sds->buf` | 兼容所有`<string.h>` > - sds的空间预分配策略: > - 修改之后,len小于1MB,则分配和len相同的free空间。 > - 修改之后,len大于1MB,则分配1MB的free空间。 > - sds的惰性空间释放策略:缩短字符串后,并不立即回收空间,而是使用free记录其数量。