为方便起见,我只使用纯文本示例。例如,对于 sentence I have a cat
,我需要malloc
13 个char
变量槽,以便它存储所有带有 final 的字母\0
。
但是,如果现在我想在lovely
之前插入cat
呢?看来我必须创建一个足够大的新数组并复制所有内容。
更糟糕的是,由于计算机无法预测要添加多少东西,所以每次添加新字母时,我似乎都必须这样做 re-malloc 和 copy 东西,即为每个字母做整个事情l
o
v
e
l
y
,事实证明这不是一个聪明的解决方案。(计算机不会提前知道“可爱”这个词,嗯?)
一个“更好”的解决方案似乎是首先创建一个足够大的数组,以便每次插入一个新字母时,程序只复制并移动它后面的所有内容。但是,这仍然是低效的,尤其是当文档很长并且我从头开始添加内容时。
这同样适用于“删除”,每次删除一个字母时,我都必须复制它之后的所有内容并缩小数组大小,看来。
使用节点而不是数组来存储内容似乎是一个同样糟糕的解决方案,因为现在每次我想在内容中间做某事时,我都必须从头开始走一条路。
那么在这种情况下管理内存的正确或有效方法是什么?我想要在诸如 C 之类的低级别编程的答案,它需要直接分配和取消分配内存,而不需要已经为您处理所有事情的“魔术”函数或库。