我们什么时候需要C中的缓冲区?

时间:2012-05-31 02:54:15

标签: c

我正在阅读别人的代码,看到很多人使用像BUFFER_SIZE这样的宏作为宏。问题是,许多程序可以在没有这个缓冲区的情况下编写。那么我们什么时候需要缓冲区呢?我的意思是,为什么我们需要缓冲?以及如何正确使用它?

3 个答案:

答案 0 :(得分:4)

来自维基百科:

  

缓冲区是物理内存存储区域,用于在数据从一个位置移动到另一个位置时临时保存数据。

话虽如此,我觉得缓冲区有一些具体用途:

  • 将异步数据源转换为同步数据源: 这是一个很大的问题,很多API都是用这种思维方式构建的。例如,假设您正在读取本质上容易出现故障的数据源。异步地,您有一个流可能在某些时候失败,但您可以请求再次读取数据。这种数据处理是一个非常低级的细节,你不希望高级程序员不必担心它。解决方案,编写一个低级处理程序,管理流并在安全读入数据后将数据放入缓冲区。例如,您可以在文件系统,网络协议等中看到这种缓冲区的使用......

  • 传递大量数据:如果您想在多人之间共享数据,则需要一个临时存储数据的位置,以便在人与人之间进行调解。

  • 复制事物/进行破坏性操作:如果您需要释放一个指针并在内存中移动某些东西(无论出于何种原因),您可以将数据放在临时存放位置。一个常见的情况是,我正在做一些像破坏性地操纵字符串的事情:我无法操纵原始字符串,我需要复制它,所以我不会破坏指针,如果其他人们坚持不懈。

答案 1 :(得分:0)

缓冲区只是一大块数据,您需要多少以及何时需要它依赖于任务。涉及缓冲区的最常见操作是文件I / O和数组。

答案 2 :(得分:0)

有时候,它会用来吸收一些网络抖动。 您可以在Youtube上顺畅观看电影的原因是因为您的浏览器首先将一些数据下载到缓冲区中,然后播放它。