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

我们什么时候需要C语言中的缓冲区?,c,C,我正在阅读别人的代码,看到很多人使用缓冲区大小之类的宏。问题是,许多程序都可以在没有缓冲区的情况下编写。那么我们什么时候需要缓冲区,什么时候不需要?我是说,我们为什么需要缓冲?如何正确使用它 缓冲区只是一块数据,您需要多少以及何时需要它取决于任务。最常见的涉及缓冲区的操作是文件I/O和阵列。有时,它被用来吸收一些网络抖动。 您可以在Youtube上顺利观看电影的原因是,您的浏览器首先将一些数据下载到缓冲区,然后播放。来自维基百科: 缓冲区是物理内存存储器的一个区域,用于在数据从一个位置移动到另一

我正在阅读别人的代码,看到很多人使用缓冲区大小之类的宏。问题是,许多程序都可以在没有缓冲区的情况下编写。那么我们什么时候需要缓冲区,什么时候不需要?我是说,我们为什么需要缓冲?如何正确使用它

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

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

来自维基百科:

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

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

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

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

  • 复制内容/进行破坏性操作:如果需要释放一个指针并在内存中移动某些内容(无论出于何种原因),可以将数据放在临时保留位置。一种常见的情况是,我正在执行类似于破坏性操作字符串的操作:我无法操作原始字符串,我需要复制它,因此如果其他人抓住它,我不会损坏指针


这是一个真正的问题吗?它是关于一般的缓冲区,使用宏而不是幻数,还是如何在没有缓冲区的情况下编写程序?澄清这一点以消除我的反对票。