嵌入式大雜燴周記 | 第 15 期
大家好,我是雜燴君。
嵌入式大雜燴周記主要是一些實(shí)用項(xiàng)目學(xué)習(xí)分享,每篇一個(gè)主題。
SDS 是 C 的字符串庫(kù),旨在通過添加堆分配的字符串來增強(qiáng)有限的 libc 字符串處理功能。
SDS 字符串庫(kù)特點(diǎn):
(1)計(jì)算效率更高。獲取字符串長(zhǎng)度所需的復(fù)雜度從O(N)降低到了O(1),所以即使獲取一個(gè)非常長(zhǎng)的字符串長(zhǎng)度,也不會(huì)對(duì)系統(tǒng)性能造成任何影響,因?yàn)樵撁畹臅r(shí)間復(fù)雜度僅為O(1)。
(2)二進(jìn)制安全。SDS 字符串函數(shù)是二進(jìn)制安全的,因此無論內(nèi)容如何,長(zhǎng)度都是字符串的真實(shí)長(zhǎng)度,如果字符串中間包含空字符,也沒有問題。而C字符串函數(shù)遇到空字符結(jié)束。
(3)SDS 字符串函數(shù)杜絕緩沖區(qū)溢出。
(4)SDS 字符串函數(shù)減少修改字符串時(shí)帶來的內(nèi)存重分配次數(shù)。
(5)SDS 字符串函數(shù)兼容部分C字符串函數(shù)。
sds的使用
1、sds結(jié)構(gòu)
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[];
};
用到了柔性數(shù)組,