Mi chiedo il motivo per cui gli array statici non devono essere liberati? So che quando si crea un array dinamico, ad es.Perché gli array statici non devono essere liberati?
int *p;
p = malloc(10*sizeof(int));
Dobbiamo liberare la memoria allocata utilizzando:
free(p);
E per una matrice statica in una funzione, la matrice statica saranno liberati automaticamente quando viene eseguita la funzione chiamata.
Quello che non capisco è: quando si ritorna un array statico utilizzando una funzione come questa:
int *subFunc(){
static int a[5] = {1,2,3,4,5};
return a;
}
int main(){
int *p;
p = subFunc();
}
Se la matrice statica viene liberato automaticamente dopo aver completato l'esecuzione, allora come possiamo ancora accedere ai valori di la matrice statica correttamente?
'locali static' si comportano in modo leggermente diverso da' globali static': essi non sono inizializzate all'avvio del programma, ma [quando l'esecuzione passa dapprima loro punto inizializzazione] (http://stackoverflow.com/questions/ 246564/what-is-the-vita-di-un-statico-variabile-in-ac-funzione). – Quentin
@Quentin Sei sicuro che sia così anche per C? Puoi collegare qualche riferimento? –
Apparentemente ho mescolato effettivamente le regole C e C++. Colpa mia ! – Quentin