C字符串和SDS之间的区别

本文对比了传统C字符串与简单动态字符串(SDS)的特点,包括字符串长度获取效率、安全性、内存重分配策略及数据存储能力等关键特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总结

C字符串SDS
获取字符串长度的复杂度为O(N)获取字符串长度的复杂度为O(1)
API是不安全的,可能会造成缓冲区溢出API是安全的,不会造成缓冲区溢出
修改字符串长度N次必然需要执行N次内存重分配修改字符串N字最多需要执行N次内存重分配
只能保存文本数据(不能有空格)可以保存文本或二进制数据(可以存着空格,因为SDS使用len属性的值而不是空字符来判断字符串是否结束)
可以使用所有<string.h>库中的函数可以使用部分<string.h>库中的函数