一些背景知识:我正在编写一个C函数,它将文件中的文本读入动态重新分配的数组中。我从BUF_SIZE
字符开始,读到我达到极限,然后重新分配。当我完成后,我在文本的末尾附加\0
(而不是数组的末尾)。
将数组放得太大(并且丢失一点内存 - 非常少)或将realloc()
留给更小的尺寸会更好吗?
答案 0 :(得分:1)
不要打扰realloc()
最终尺寸。当不再需要内存时,无论如何都会free()
,除非字符串很大,否则即使你realloc()
它的大小更小,malloc()
的对齐要求也可能不会改变实际保留的空间,所以你只需要对一个非常昂贵的函数进行多余的调用。
TL; DR:不收缩阵列!
还有一条好的建议:从统计上来说,每次达到上一个限制时,值得将分配大小加倍。