注意:
这是关于纯C语言的问题。不涉及C++函数等。
问题:
假设我malloc
了一个可以容纳100个char
的缓冲区。然后,我只用实际的char
填充其中5个插槽。我听说最佳实践是要将缓冲区中所有剩余的插槽都置空,像这样:
while (nextAvailableBufferSlot < currentBufferSize)
{
buffer[nextAvailableBufferSlot] = '\0';
nextAvailableBufferSlot++;
}
这是必须的吗?还是我可以简单地设置
buffer[5] = '\0'
并省去循环呢?
上下文:
所涉及的代码经常使用大小为4096的缓冲区,而被复制到其中的99%字符串要短得多,这使得上面的循环几乎每次都要运行至少几千次。
我无法预先知道字符串的大小。由于重新分配非常昂贵,因此我最初选择了一个大的缓冲区大小。我针对桌面级硬件进行优化,因此内存不受限制。