char *b=(char *)malloc(100); char *c=b; FILE *as; as=fopen("log","r"); c=(char *)&b; do{ fscanf(as,"%s",&b); printf("%s\n",c); fflush(stdin); }while(!feof(as)); fclose(as); free(c);
[quote=引用 16 楼 u011649187 的回复:] [quote=引用 14 楼 max_min_ 的回复:] [quote=引用 4 楼 u011649187 的回复:] [quote=引用 1 楼 lin5161678 的回复:] fscanf(as,"%s",&b); b已经不是指向malloc的返回值了
vc6.0是会终止的,你自己看一下也就懂了,c=(char *)&b;,b和c都是char * 类型的,你对b取地址,得到的就是指向char *的指针了,char **类型,c得到到的值是b这个局部对象在内存栈的地址,你free(c),明显是错误的,free()只能释放malloc出来的堆内存,malloc什么,才有free什么,一一对应
[quote=引用 23 楼 max_min_ 的回复:] [quote=引用 16 楼 u011649187 的回复:] [quote=引用 14 楼 max_min_ 的回复:] [quote=引用 4 楼 u011649187 的回复:] [quote=引用 1 楼 lin5161678 的回复:] fscanf(as,"%s",&b); b已经不是指向malloc的返回值了
[quote=引用 14 楼 max_min_ 的回复:] [quote=引用 4 楼 u011649187 的回复:] [quote=引用 1 楼 lin5161678 的回复:] fscanf(as,"%s",&b); b已经不是指向malloc的返回值了
什么编译器什么系统
[quote=引用 15 楼 u011649187 的回复:] [quote=引用 11 楼 lcmzgy 的回复:] [quote=引用 8 楼 u011649187 的回复:] [quote=引用 5 楼 lcmzgy 的回复:] [quote=引用 4 楼 u011649187 的回复:] [quote=引用 1 楼 lin5161678 的回复:] fscanf(as,"%s",&b); b已经不是指向malloc的返回值了
[quote=引用 11 楼 lcmzgy 的回复:] [quote=引用 8 楼 u011649187 的回复:] [quote=引用 5 楼 lcmzgy 的回复:] [quote=引用 4 楼 u011649187 的回复:] [quote=引用 1 楼 lin5161678 的回复:] fscanf(as,"%s",&b); b已经不是指向malloc的返回值了
[quote=引用 4 楼 u011649187 的回复:] [quote=引用 1 楼 lin5161678 的回复:] fscanf(as,"%s",&b); b已经不是指向malloc的返回值了
[quote=引用 8 楼 u011649187 的回复:] [quote=引用 5 楼 lcmzgy 的回复:] [quote=引用 4 楼 u011649187 的回复:] [quote=引用 1 楼 lin5161678 的回复:] fscanf(as,"%s",&b); b已经不是指向malloc的返回值了
[quote=引用 1 楼 lin5161678 的回复:] fscanf(as,"%s",&b); b已经不是指向malloc的返回值了
[quote=引用 9 楼 jerry_dqh 的回复:] [quote=引用 7 楼 u011649187 的回复:] [quote=引用 6 楼 jerry_dqh 的回复:] [quote=引用 3 楼 u011649187 的回复:] [quote=引用 2 楼 jerry_dqh 的回复:] 话说..... 当我调用已经被free掉的数据,数据依然在... 那我到底是有没有把它们释放... 》》free掉,不表示那块被释放的内存被清0了,不一定。
33,311
社区成员
41,784
社区内容
加载中
试试用AI创作助手写篇文章吧