大家好,我是雜燴君。
嵌入式大雜燴周記主要是一些實用項目學習分享,每篇一個主題。
SDS 是 C 的字符串庫,旨在通過添加堆分配的字符串來增強有限的 libc 字符串處理功能。
SDS 字符串庫特點:
(1)計算效率更高。獲取字符串長度所需的復雜度從O(N)降低到了O(1),所以即使獲取一個非常長的字符串長度,也不會對系統(tǒng)性能造成任何影響,因為該命令的時間復雜度僅為O(1)。
(2)二進制安全。SDS 字符串函數是二進制安全的,因此無論內容如何,長度都是字符串的真實長度,如果字符串中間包含空字符,也沒有問題。而C字符串函數遇到空字符結束。
(3)SDS 字符串函數杜絕緩沖區(qū)溢出。
(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[];
};
用到了柔性數組,