我正在阅读其他人的代码,看到很多人使用像 BUFFER_SIZE 这样的宏作为宏。问题是,许多程序可以在没有这个缓冲区的情况下编写。那么我们什么时候需要缓冲,什么时候不需要呢?我的意思是,为什么我们需要一个缓冲区?以及如何正确使用它?
3 回答
来自维基百科:
缓冲区是物理内存存储的一个区域,用于在数据从一个地方移动到另一个地方时临时保存数据。
话虽如此,我觉得缓冲区有一些具体的用途:
将异步数据源转换为同步数据源:这是一个很大的问题,很多 API 都是以这种思维方式构建的。例如,假设您正在读取一个天生就容易出错的数据源。异步地,您有一个可能在某些时候失败的流,但您可以请求再次读取数据。这种数据处理是一个非常低级的细节,您不希望高级程序员担心它。解决方案是编写一个管理流的低级处理程序,并在数据被安全读入后将数据放入缓冲区。例如,您会在文件系统、网络协议等中看到缓冲区的这种使用......
传递大量数据:如果你想在多人之间共享数据,你需要一个临时的地方来存储数据以在人与人之间进行调解。
复制东西/进行破坏性操作:如果您需要释放一个指针并在内存中移动某些东西(无论出于何种原因),您可以将数据放在一个临时保存位置。一个常见的情况是我正在做一些破坏性操作字符串之类的事情:我无法操作原始字符串,我需要复制它,所以如果其他人持有它,我不会破坏指针.
缓冲区只是一块数据,您需要多少以及何时需要它取决于任务。涉及缓冲区的最常见操作是文件 I/O 和数组。
有时,它被用来吸收一些网络抖动。你可以在 Youtube 上流畅地观看电影的原因是你的浏览器首先将一些数据下载到缓冲区中,然后再播放。