笔记:
这是一个关于纯 C 的问题。没有 C++ 函数等。
问题:
假设我malloc
有一个可以容纳 100 的缓冲区chars
。然后,我只用实际的chars
. 我听说最好的做法是将缓冲区中的所有剩余插槽清空,如下所示:
while (nextAvailableBufferSlot < currentBufferSize)
{
buffer[nextAvailableBufferSlot] = '\0';
nextAvailableBufferSlot++;
}
这是绝对必要的,还是我可以简单地设置buffer[5] = '\0'
并保存一个循环?
语境:
有问题的代码被非常频繁地调用,缓冲区大小为 4096,并且复制到其中的 99% 的字符串要短得多,这使得上面的循环几乎每次都运行至少几千次迭代。
我不可能事先知道字符串的大小。而且因为重新分配非常昂贵,所以我最初选择了一个大的缓冲区大小。我以桌面级硬件为目标,因此内存完全不受限制。