0

一些背景知识:我正在编写一个 C 函数,它将文件中的文本读取到动态重新分配的数组中。我从BUF_SIZE字符开始,阅读直到达到极限,然后重新分配。完成后,我\0在文本的末尾(而不是数组的末尾)追加。

将数组留得太大(并丢失一点内存——非常少)还是留得更小,是不是更好realloc()

4

1 回答 1

1

不要打扰realloc()最终的大小。当不再需要内存时free(),无论如何你都会使用它,除非字符串很大,否则即使你realloc()将它的大小缩小,对齐要求malloc()也不会改变实际保留的空间,所以你只是做一个多余的调用一个相当昂贵的函数。

TL;DR:不要缩小数组!

还有一个很好的建议:从统计上讲,每次达到之前的限制时,都值得将分配大小加倍。

于 2013-06-17T05:43:09.283 回答