ciao a tutti
il seguente codice

char * comprimi(char * nome_source)
{

FILE * source;
FILE *dest;
char nome_dest[100];


strcpy(nome_dest,nome_source);
strcat(nome_dest,".cmp");

source=fopen(nome_source,"r");
dest=fopen(nome_dest,"w");

SET_BINARY_MODE(source);
SET_BINARY_MODE(dest);

def(source, dest, Z_DEFAULT_COMPRESSION);

fclose(source);
fclose(dest);

return nome_dest;

}

mi restituisce il seguente messaggio di warning:
"returning address of local variable or temporary"
perkè in pratica la variabile nome_dest è definita all'interno della funzione

dovrei definire un
char * nome_dest
e poi magari allocare memoria per questa variabile con una malloc.

Ora vorrei sapere
free(nome_dest) dove va richiamata se utilizzassi il malloc?
come dovrei fare per ottenere correttamente un char * in uscita?
Grazie a tutti

di certo non all'interno della funzione