7_14:自动变量潜在问题

来源:互联网 发布:淘宝点火炬微信群 编辑:程序博客网 时间:2024/04/30 04:23

一源代码:

#include <stdio.h>


FILE *
open_data(void)
{
        FILE *fp;
        char buf[BUFSIZE];


        if( (fp = fopen("datafile","r")) == NULL )
                return NULL;


        if( setvbuf(fp,buf,_IOLBF, BUFZIE) != 0)
                return NULL;


        return fp;
}



潜在的问题:

当open_data函数返回时,其在stack上的位置,会被下一个调用的函数占用。 但是该流的缓冲区还是指向这里 会造成混乱。 应在全局的存储空间静态的(static 和extern)或者动态的alloc 为数组buf分配空间。

0 0