输入输出流的有关问题
输入输出流的问题C/C++ code#includestdio.h#includestdlib.hint main(){int ifree(stdin)scanf(%d
输入输出流的问题
C/C++ code#include<stdio.h>#include<stdlib.h>int main(){ int i; free(stdin); scanf("%d",&i); //free(stdout); printf("%d",i); system("pause"); return 0;}
看到书上说,输入输出缓存是malloc函数建立的,于是我就试验了上面这个程序,发现运转一切正常,这是为什么?希望大神能够解答下,谢谢
[解决办法]free的参数是malloc的返回值,io缓存是malloc出来的,不代表stdin/stdou就是这个缓存,所以free(stdin/stdout)是个很严重的错误调用。
另外io缓存是stdin的一部分(某一成员)。
[解决办法]不敢保证stdin,stdout是怎么分配的,而且即便free了也可以内存非法访问的使用它而不引起core。
比如,stdin,stdout是在某个stdio.c里这样定义的全局变量:
FILE fstdin;
FILE *stdin = &fstdin;
那你free它本身就是一种错误。