缓冲区的本质是一块存储区域
缓冲区分类:全缓冲,行缓冲,不缓冲。
全缓冲:
- 缓冲区满会输出。
- 程序结束会输出。
- 刷新缓冲区。 函数:fflush(stdout);
缓存在缓冲区的东西在缓冲区满的时候,才写入磁盘或者调用fflush刷新缓冲区才能写入到磁盘。对于全缓冲,如果缓冲区没满,或者我们没有手动刷新缓存,那么缓存区的内容是不能写入到磁盘的。
行缓冲:
- 碰到\n会输出。
- 程序结束会输出
- 缓冲区满会输出。
- 刷新缓冲区
标准输入、标准输出都是采用的行缓存,也就是遇到换行符的时候,才会将缓存区的东西写入到磁盘。
不缓冲:
- 直接输出缓冲区里的数据。
有时希望一些内容在第一时间写入磁盘或者显示出来,比如我们显示错误信息的时候(如标准出错,它就是直接显示出错信息,而不会先放入缓存)。
参考博客: