首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

输入输出流的有关问题

2012-04-28 
输入输出流的问题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它本身就是一种错误。

热点排行