Perdonami se ti rispondo soltanto ora ma sono andato ad informarmi per quanto riguarda le funzioni free e malloc dato che non ho ancora avuto modo di studiarle. In pratica credo si tratti di un problema di allocazione dinamica della memoria.
Dimmi se ho capito bene: se definisco, in una funzione diversa dal main (per esempio int f(int a), una variabile che viene restituita al termine della funzione, quando chiamo la suddetta funzione nel main, mi viene restituito il valore assunto dalla variabile definita nella funzione int f(int a), senza nessun problema. Invece, se tale funzione restituisce un puntatore ad una variabile(ancora una volta definita nella funzione esterna al main), stampando il valore puntato dal puntatore potrei ritrovarmi dei valori diversi da quelli corretti, questo perchè non ho allocato memoria dinamica tramite la funzione malloc.
Inoltre, una volta che il programma termina, mi devo ricordare di liberare lo spazio di memoria occupata dal puntatore tramite la funzione free.
E' corretto ciò che ho detto?
Quindi, quando definisco una funzione che mi restituisce un puntatore devo sempre allocare memoria dinamica tramite la funzione malloc?
Ultima cosa: il (int*) anteposto al malloc serve per convertire il valore restituito dalla funzione malloc ad un int, dato che malloc dovrebbe restituire un char, giusto?
Grazie ancora!![]()