Мне интересно, почему статические массивы не нужно освобождать? Я знаю, что при создании динамического массива, например.
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();
}
Если статический массив автоматически освобождается после завершения выполнения, то как мы можем получить доступ к значениям статического массива правильно?