嵌入式大杂烩周记 | 第 15 期
扫描二维码
随时随地手机看文章
大家好,我是杂烩君。
嵌入式大杂烩周记主要是一些实用项目学习分享,每篇一个主题。
SDS 是 C 的字符串库,旨在通过添加堆分配的字符串来增强有限的 libc 字符串处理功能。
SDS 字符串库特点:
(1)计算效率更高。获取字符串长度所需的复杂度从O(N)降低到了O(1),所以即使获取一个非常长的字符串长度,也不会对系统性能造成任何影响,因为该命令的时间复杂度仅为O(1)。
(2)二进制安全。SDS 字符串函数是二进制安全的,因此无论内容如何,长度都是字符串的真实长度,如果字符串中间包含空字符,也没有问题。而C字符串函数遇到空字符结束。
(3)SDS 字符串函数杜绝缓冲区溢出。
(4)SDS 字符串函数减少修改字符串时带来的内存重分配次数。
(5)SDS 字符串函数兼容部分C字符串函数。
sds的使用
1、sds结构
struct sds { uint8_t len; /* used */ uint8_t alloc; /* excluding the header and null terminator */ unsigned char flags; /* 3 lsb of type, 5 unused bits */ char buf[];
};
用到了柔性数组,