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

自动变量的潜在有关问题

2012-09-19 
自动变量的潜在问题下面是一个错误的实例......#define DATAFILEdatafileFILE *open_data(void){FILE *f

自动变量的潜在问题

下面是一个错误的实例

......#define DATAFILE        "datafile"FILE *open_data(void){        FILE *fp;        char databuf[BUFSIZE];        if((fp = fopen(DATAFILE, "r")) == NULL)                return NULL;        ...        ...        return ...}

问题是:当open_data返回时,它在栈上所使用的空间将由下一个被调用函数的栈帧使用。但是,标准I/O库函数仍将使用其缓冲区的存储空间。这就产生了冲突和混乱。为了校正这个问题,应在全局存储空间静态的(static or extern)或者动态的(alloc)为数组databuf分配空间。

1楼weiqubo21分钟前
你是要返回char databuf[BUFSIZE]; ?n是你不明白内存管理,跟自动变量没关系.
Re: zhangjie20141218分钟前
回复weiqubon不是返回databuf,没看见函数的返回类型吗?

热点排行