缓冲区就在内存里,一般是为了缓冲硬盘上的数据。
缓冲区的用途说的很明白了,因为往硬盘里一次写一块,和一次写一个字符,速度是没什么太大的差别。但不管怎么写,速度都比内存要慢几个数量级。所以为了提高 CPU 的吞吐能力,减少它的等待时间。就不写到硬盘中,而是先写到内存里。为了这个目的而使用的内存区间,叫缓冲区。
刷缓冲区的意思就是强制写回设备,硬盘呀,USB 呀都有可能。如果缓冲区满了也会自动刷,这也没什么好的报警机制,就是往内存里写的时候,系统可以侦测缓冲区。
方法差不多是这样,比如假设缓冲区的大小是 1024 个字节
for (;*p != '\0' && p < buf+1024; p++) { ... }
if (p == buf+1024) flush();
这样就行了。
另外程序结束,文件关闭,设备弹出等动作都会触发刷新。
你那个表情的问题太“形像”了,我一时还没搞明白。但肯定写到设备里的顺序和你想像的一样,要是写反了,那谁还敢用缓冲。