缓冲区是属于流的内存块,用于临时保存流数据.当在文件上发生第一次I/O操作时,malloc调用并获得缓冲区.写入流的字符通常在缓冲区中累积(在以块的形式传输到文件之前),而不是在应用程序输出后立即出现.类似地,流以块为单位而不是逐个字符地从主机环境检索输入.这样做是为了提高效率,因为与内存操作相比,文件和控制台I/O速度较慢.
GCC提供三种类型的缓冲 - 无缓冲,块缓冲和行缓冲.无缓冲意味着一旦写入(对于输出流)字符就出现在目标文件上,或者逐个字符地从文件读取输入而不是读取块(对于输入流).块缓冲意味着字符被保存在缓冲区中并作为块写入或读取.行缓冲意味着只有在缓冲区中写入或读取换行符之前才会保存字符.
stdin和stdout被块缓冲当且仅当它们可被确定为不参照其他交互设备它们行缓冲(这是任何流的真).stderr默认情况下始终是无缓冲的.
标准库提供了更改流的默认行为的函数.您可以使用fflush强制数据输出流缓冲区(fflush输入流未定义).您可以使用该setbuf功能使流无缓冲.
| 归档时间: |
|
| 查看次数: |
2196 次 |
| 最近记录: |