【发布时间】:2016-09-05 00:37:49
【问题描述】:
我想知道为什么不需要释放静态数组?我知道在创建动态数组时,例如
int *p;
p = malloc(10*sizeof(int));
我们必须使用以下方法释放分配的内存:
free(p);
并且对于函数中的静态数组,静态数组会在被调用函数完成后自动释放。
我不明白的是:当使用这样的函数返回静态数组时:
int *subFunc(){
static int a[5] = {1,2,3,4,5};
return a;
}
int main(){
int *p;
p = subFunc();
}
如果静态数组在执行完成后自动释放,那我们怎么还能正确访问静态数组的值呢?
【问题讨论】:
标签: c scope static return-value lifetime