当前位置: 首页 > 面试题库 >

在C语言中,stdout缓冲区的大小是多少?

轩辕鸿
2023-03-14
问题内容

今天,我了解到,将stdout设置为terminal并在不同情况下进行缓冲时,它是行缓冲的。因此,在正常情况下,如果我使用printf()而不以“ \
n”结尾,则仅在缓冲区已满时才在屏幕上打印它。如何获得此缓冲区的大小,这有多大?


问题答案:

实际大小由各个实现定义;该标准并没有规定最小大小(无论如何,基于我已经能够找到的大小)。没有关于如何确定缓冲区大小的线索。

编辑

章节:

7.19.3文件


3当流没有 缓冲时 ,字符应尽快从源或目标出现。否则,字符可能会作为块被累积并传输到主机环境或从主机环境传输。当一个流被 完全缓冲后
,在缓冲区被填充后,字符将作为块与主机环境进行传输。当流被 行缓冲时
,当遇到换行符时,字符打算作为块与主机环境进行传输。此外,当缓冲区已满,在无缓冲流上请求输入或在需要从主机环境传输字符的行缓冲流上请求输入时,打算将字符作为块传输到主机环境。
对这些特性的支持是由实现定义的,并且可能会受到setbufsetvbuf功能的影响

重点已添加。

“实现定义的”不是对“我不知道”的委婉说法,它只是语言标准明确地将其留给 实现定义 行为的声明。

话虽这么说,但是 一种非编程的方法可以找到答案。请查阅编译器的文档。“实施定义的”还意味着实现 必须 记录以下行为:

3.4.1

1 实现定义的行为未
指定的行为,其中每个实现都记录了如何做出选择

。2示例实现定义的行为的一个示例是有符号整数右移时的高阶位的传播。



 类似资料:
  • 问题内容: 构造函数中的缓冲区大小是什么意思? 当我编写程序时: 输出: 然后,缓冲区大小是什么意思,正如我希望的那样,它只能读取两个字符。但事实并非如此。 问题答案: 顾名思义,缓冲输入。这意味着它会在将输入源传递给您之前从输入源读取到缓冲区。此处的缓冲区大小是指其缓冲的字节数。 从大多数来源读取输入非常慢。仅2个字节的缓冲区将损害性能,因为您的程序很可能大部分时间都在等待输入。缓冲区大小为2时

  • 问题内容: 读取文件太大而无法容纳缓冲区时,出现致命错误。 要么, RangeError:“ size”参数不得大于Function.Buffer.allocUnsafe(buffer.js:209:3)的2147483647 如果我尝试分配1GB缓冲区,则会遇到同样的致命错误, Node.js Buffer类实例的最大大小是多少? 问题答案: V8中类型化数组的最大长度当前设置为以下值,具体取决

  • 问题内容: 我正在尝试创建一个异步通道,并且一直在查看http://golang.org/ref/spec#Making_slices_maps_and_channels。 缓冲区大小为10是什么意思?缓冲区大小具体代表/限制了什么? 问题答案: 缓冲区大小是在没有发送阻塞的情况下可以发送到通道的元素数。默认情况下,通道的缓冲区大小为0(可通过来获得此值)。这意味着每个发送都会阻塞,直到另一个go

  • ByteArrayOutputStream(int size)-创建一个新的字节数组输出流,具有指定大小的缓冲区容量(以字节为单位)。 ByteArrayOutputStream()在默认情况下有32个字节的缓冲区,这就是Apache Commons有完全相同的类org.Apache.Commons.io.output.ByteArrayOutputStream的原因:“最初的实现一开始只分配32

  • 问题内容: 我碰到一行,命令的输出已完全缓冲。这是什么意思? 问题答案: 在线C11标准 7.21.3 / 3: 当流没有 缓冲时 ,字符应尽快从源或目标出现。否则,字符可能会作为块被累积并传输到主机环境或从主机环境传输。当流被 完全缓冲时 ,打算在填充缓冲区时将字符作为块与主机环境进行传输。当流被 行缓冲时 ,当遇到换行符时,字符打算作为块与主机环境进行传输。此外,当填充缓冲区,在无缓冲流上请求

  • 我想在我的小libgdx游戏中使用框架缓冲区。 游戏使用了,我修改了s摄像头,使其使用50宽31高的视口。然后我将的投影矩阵设置为。这样做,我有一个分辨率独立的游戏,我可以使用我自己的“世界单位”,而不是使用像素。 但是现在,如果我创建一个,我必须给它一个大小。我必须给它摄像机视口的大小还是屏幕的大小(以像素为单位)? 而且,当我渲染的东西,我可以渲染他们在,这意味着渲染在几乎在游戏窗口的中间?