2012-05-31 86 views
3

我在读别人的代码,看到很多人用BUFFER_SIZE这样的宏作为宏。事情是,许多程序可以写入没有这个缓冲区的东西。那么我们什么时候需要缓冲,什么时候不需要缓冲?我的意思是,为什么我们需要缓冲区?以及如何正确使用它?我们什么时候需要C中的缓冲区?

+0

这是一个真正的问题吗?是关于一般的缓冲区,使用宏而不是幻数,或者如何编写没有缓冲区的程序?澄清这一点,以消除我的downvote。 –

回答

4

维基百科:

一个缓冲器是用于在其被从一个地方移动到另一个临时保持数据的物理存储器的存储区域。

有了这样说,我觉得有缓冲区的几个具体的用途:

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

  • 传递大量数据:如果你想在多人之间共享数据,你需要一个临时的地方来存储数据以在人们之间进行调解。

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

0

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

0

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

相关问题