- 论坛徽章:
- 0
|
看了不少资料,有的说malloc是在堆上分配的变量,需要明确用free释放。言下之意就是如果malloc之后不free,那么在程序结束前它一直存在,是不是这样?如果以全局变量为参数,然后在过程函数中malloc并返回,会有什么后果?
需要从配置文件中读取数据,因为数据分成很多段,每段大小可以由1~XXXX,所以想使用malloc,但下面的程序有问题.想问一下,大家碰到这样的问题是怎么解决的???
char **g_env;
void B();void C();......void G();
char **A(char **g_env)
{
......
fgets(ctmp,N,f);
g_env[i] = (char*)malloc(strlen(ctmp)+1);
strcpy(g_env[i],ctmp);
......
return g_env;
}
......
int main()
{
g_env = (char**)malloc(N);
g_env = A(g_env);
B();
C();
......
G();
......
}
已确定在除了A()之外,其它函数没有任何修改g_env的语句,但对于g_env的访问,即使在B(),C()......中正常,在G()......中也会发生错误导致程序崩溃。 |
|