setbuf更改缓冲区的大小
来源:11-2 文件流的缓冲

wxz123
2021-02-04
char buf[8192];
setbuf(file, buf);
char buf[8192];
setvbuf(file, buf, _IOLBF, 8192);
1、老师,您课上说setbuf不能更改缓冲区的大小,这句话怎么理解呢?直接把buf数组的大小buf[8192]
改了不就更改缓冲区大小了吗?setvbuf不就这么改的吗?
2、另外,setvbuf的参数buf数组的大小8192和setvbuf的参数8192是一样的吗?都代表缓冲区大小?
写回答
2回答
-
setbuf虽然可以修改缓冲区的大小,但因为没有传缓冲区的大小进去,所以系统并不知道你开辟了多大,都会按照 BUF_SIZE 去使用。所以改不了
00 -
bennyhuo
2021-02-05
这两个问题的根本原因在于,你传了一个指针给setbuf setvbuf,这个指针是没有大小信息的。基于这一点你再想想这两个问题是不是有答案了。
10
相似问题