Ciao a tutti ho una funzione che mi ritorna il puntatore ad una struct, all'interno della funzione alloco memoria per la struct e per i suoi membri, quando non ho più bisogno della struct fuori dalla funzione devo deallocare solo la struct o anche i suoi membri?
Scrivo un po di codice per fare un po di chiarezza.
typedef struct a
{
char* b;
char* c;
} a_type;
typedef struct message
{
char* a;
char* b;
int state;
bool set;
} msg_type;
a_type *pop(msg_type *msg) {
a_type *res = (a_type*)malloc(sizeof(a_type);
res->b = strdup(msg->a);
res->b = strdup(msg->b);
return res;
}
int main() {
msg_type msg = {"test", "test2", 10, false};
a_type *tipo;
tipo = pop(&msg);
/* Utilizzo le informazioni della variabile tipo poi non ne ho più bisogno
* quindi dealloco in questo modo? */
free(tipo->b);
free(tipo->c);
free(tipo);
/* oppure basta questo? */
free(tipo;
Spero di essere stato abbastanza chiaro, logicamente questo è un pò di codice buttato li giusto per farmi capire, il realtà msg è una coda FIFO creata dinamicamente, e la funzione pop restituisce il primo valore della coda e deve quindi deallocare dopo averla restituita, quindi devo per forza di cose allocare la memoria per a_type. Almeno da quello che credo di aver imparato.
Grazie