我有一个记录列表,一开始我不知道记录的数量。我需要将它们读入数组。 因此,是否建议一条一条地读取所有记录并一条一条地重新分配并在元素出现时继续增加数组大小,或者我应该花一次通过来识别记录数并只执行一次 malloc 吗?哪一个计算成本较低?
最佳答案
realloc
并不是真的很昂贵。但是为每个元素调用 realloc
就有点多了。我建议你这样做:
- 从尺寸开始
- 添加元素时,检查是否有足够的空间
- 当你没有足够的空间时,将当前数量加倍
正确猜测足够的初始大小也有帮助。因此,如果您输入的 60% 少于 100 条记录,请从那开始。
关于c - realloc() 的性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6727136/