在 C 语言中创建动态字符串有不同的方法(长度不断变化)。经过一些谷歌搜索,这样做的主要方式是使用 realloc() .
我实现它的一种方法是使用每个节点有 32 字节 block 的链表。
我想知道除了使用 realloc() 和链表之外是否还有更好的方法来解决这个问题,以及每种方法的优缺点。
编辑 我这样做的原因是因为我正在从套接字 recv() 接收动态数据,并且一直在寻找一种灵活的存储方式,无需分配大量不需要的数据。
最佳答案
您可以重新分配不同的预定义大小。例如,当缓冲区已满时,将其大小加倍。
使用链表是个好主意,但数据不是连续的(例如,你不能将整个结构传递给 printf
)并且索引需要更多的计算(O(N) ).一个主要优点是附加字符串(在任一端)是 O(1)。
关于C动态字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/671593/