ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 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记录其数量。