C动态字符串长度

Luc*_*eis 5 c string dynamic

在C中创建动态字符串有不同的方法(长度不断变化).经过一些谷歌搜索,这样做的主要方法是使用realloc().

我实现这一点的方法是使用每个节点具有32字节块的链表.

我想知道除了使用realloc()和链接列表之外是否有更好的解决方法,以及每种方法的缺点和优点.

编辑我这样做的原因是因为我从套接字recv()接收动态数据,并且正在寻找一种灵活的存储方式,而不需要分配大量不需要的数据.

str*_*ger 4

您可以重新分配到不同的预定义大小。例如,当缓冲区已满时,将其大小加倍。

使用链表是一个好主意,但数据不连续(printf例如,您无法将整个结构传递给 ),并且索引需要更多计算(O(N))。一个主要优点是附加字符串(在任一端)的时间复杂度为 O(1)。