关于在子函数中空间的分配问题(c语言)
我们知道,在子函数里定义的变量,所申请的空间当函数结束时自动撤销。
那么,假如我写这么一段程序:
int *fun(int x)
{
int *s;
s=(int*)malloc(2*sizeof(int));
s[0]=x;s[1]=x+1;
return s;
}
int main()
{
int *a;
a=fun(2);
printf("%d,%d",*a,*(a+1));
return 0;
}
那么在main()中,调用的fun(2)返回给a以s的地址,那么之后因fun结束,s的空间被撤销,是不是将产生错误。好像c语言的程序一些变量等都放在堆里,那么程序结束他们在堆里所占用的空间不释放吗?
不知道表达清楚了没:)