问题描述
- VC6 默认缓冲区空间问题(与_M_MPPC)
-
在网络上看到资料:“如果我们没有自己设置缓冲区的话,系统会默认为标准输入输出设置一个缓冲区,这个缓冲区的大小通常是512个字节的大小。“。
为了知道VC编译器默认对流式文件分配的缓冲区空间大小,我用以下代码:
//测试代码
#include
#include
#include
#includevoid main(void)
{
printf("BUFSIZ=%dn",BUFSIZ); //查看默认缓冲区大小FILE *fp; if((fp=fopen("dat.txt","w"))==NULL) { puts("can not open file"); exit(0); } int i; for(i=0;i<4097;i++) fputc('*',fp); system("pause"); //程序暂停,如果此时缓冲区溢出那dat.txt将已经有溢出部分的内容 fclose(fp);
}
/*
测试结果:
1、BUFSIZ的返回值是512。
2、当i=4097时,前4096个字符溢出,说明在流式文件缓冲区溢出限制是4096个字节。
*/得到这个结果后,我看了一下VC6的stdio.h中对BUFSIZ的声明:
/* Buffered I/O macros */#if defined(_M_MPPC)
#define BUFSIZ 4096
#else /* defined (_M_MPPC) /
#define BUFSIZ 512
#endif / defined (_M_MPPC) */这里我知道对于BUFSIZ空间的分配取决于是否有声明_M_MPPC,但关于这个_M_MPPC,我搜索到一篇资料,里面说明:
”_M_MPPC
Defined for Power Macintosh platforms. Default is 601 (/QP601). See Table 1.4 for more details.
“,但我仍不清楚这个是关于什么声明。
解决方案
Power Macintosh 是上世纪九十年代的一款苹果台式机。你用VC是不会支持这种机型的。
时间: 2024-10-24 04:24:43