缓冲输出与内存分配
来源:互联网 发布:网络主播黑名单第二批 编辑:程序博客网 时间:2024/05/01 03:26
程序输出有两种方式:一种是即时处理方式,另一种是先暂时存起来,然后再大块写入的方
式,前者往往造成较高的系统负担。因此,C语言实现通常都允许程序员进行实际的写操作
之前控制产生的输出数据量。
setbuf(stdout, buf);
此语句通知输入输出库,所有写入到stdout的输出都应该使用buf作为输出缓冲区,直到buf
缓冲区被填满或者程序员直接调用fflush(对于由写操作打开的文件,调用fflush将导致输
出缓冲区的内容被实际的写入该文件),缓冲区的大小有<stdio.h>中的BUFSIZ定义。
#include <stdio.h>
//char buf[BUFSIZ];
void main()
{
int c;
static char buf[BUFSIZ];
setbuf(stdout, buf);
while((c = getchar()) != EOF)
{
putchar(c);
}
printf("/n");
}
Buf缓冲区最后一次被清空是在什么时候?
答案是在main函数结束之后,作为程序交回控制给操作系统之前C运行时库必须进行的
理工作的一部分。局部变量的Buf字符数组会在main结束时释放。有两种方法可保证buf
被清空前不被释放:让缓冲区成为静态数组(或全局数组)、动态分配缓冲区,如:
setbuf(stdout, malloc(BUFSIZ));
不必检查malloc函数调用是否成功,因为setbuf函数的第二个参数取值可以为NULL,此
时标准输出不需要进行缓冲,这样程序仍然能够工作,只不过速度比较慢
- 缓冲输出与内存分配
- 缓冲输出与内存分配
- 缓冲输出和内存分配
- 缓冲输出和内存分配
- 《C陷阱与缺陷》:缓冲输出和内存分配
- 静态内存分配与动态内存分配
- 指针与内存分配
- 内存分配 与 const
- 分配与释放内存
- 堆栈与内存分配
- 指针与内存分配
- 变量与内存分配
- 内存分配与初始化
- 管理与分配内存
- 内存分配与释放
- 内存处理与分配
- MPI_allreduce如何指定输入缓冲与输出缓冲相同
- 缓冲输出
- 电脑人的病
- 全局变量和局部变量在内存里的区别
- 如何为对话框屏蔽系统自带的F1功能键功能
- Cairngorm 3 introduction 介绍
- Struts 2与AJAX
- 缓冲输出与内存分配
- Qt对WCF服务的访问
- 的萨芬的是
- 一个简单的javascript菜单_Javascript教程
- C++STRING类常用函数
- 终于攻下了Code Complete英文版
- POJ 1230 Pass-Muraille
- UML组件图
- session和cookie的区别