
Ho un puntatore a char che passo ad una funzione. In questa funzione alloco dinamicamente memoria con malloc, assegnando l'indirizzo ottenuto al puntatore passato. Ma all'uscita lo spazio allocato è svanito nel nulla

Mi spiego meglio con un po' di codice.
Nella funzione in cui avviene l'allocamento di memoria ho:
Codice: Seleziona tutto
int mia_funzione (char* p)
{
if ((p = malloc (N, sizeof (char)))== NULL) exit (1);
...
return 0;
}
In main ho:
Codice: Seleziona tutto
char* str;
...
mia_funzione (str);
... /* qui lo spazio appena allocato non è disponibile */
Perchè della memoria allocata nel segmento heap svanisce in questo modo ? Mi sfugge qualcosa ?