缓冲区是什么?

  • 缓冲区也叫缓存。我们在内存空间中预留一个存储空间,这个空间就叫做缓冲区。
  • 缓冲区还分成输入缓冲区和输出缓冲区

 

为什么需要缓冲区?

缓冲区可以大大的增加计算机的速度

  1. 读取时
  • 当我们读取磁盘的信息,我们会把读到的数据放在缓冲区里,等到缓冲区里满了,计算机才一次过读取缓冲区里数据
  • 这样能够减少磁盘读写次数,而且(计算机对缓冲区的速度)比(计算机对磁盘的速度)还要快
  1. 写入时
  • 当我们使用打印机打印文档,由于打印机的打印速度较慢
  • 我们先把文档输出到打印机的缓冲区,再让打印机自行逐步打印
  • 这时我们的CPU可以处理别的事情,而不会浪费时间
  1. 所以,缓冲区就像是磁盘和计算机之间的桥梁,这个桥梁可以增加磁盘和计算机的读写速度

 

缓冲的类型

缓冲分为三种类型:全缓冲、行缓冲和不带缓冲

  1. 全缓冲

当填满标准I/O缓存后(也就是缓冲区满了过后)才进行实际I/O操作。全缓冲的典型代表是对磁盘文件的读写。

  1. 行缓冲

当在输入和输出中遇到换行符时,执行真正的I/O操作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作。典型代表是键盘输入数据。

  1. 不带缓冲

也就是不进行缓冲,立即输出,标准出错情况cerr(C++语言)或stderr(C语言)是典型代表,这使得出错信息可以直接尽快地显示出来

 

什么时候会刷新缓冲区(输出缓冲区)

  • 缓冲区满时
  • 执行flush 或 endl 语句
  • 关闭文件

 

什么是endl和flush?

  • endl:立即输出缓冲区里的文本,再输出多一个换行符
  • flush : 是立即输出缓冲区里的文本(和endl一样),但不会在后面加上一个换行符

 

就如我们常用的

cout << ”hello world” << endl;

 

 

更多讨论在 点我进入