Ho una funzione e dovrei capire il motivo di un dato errore ma non ne riesco a venire a capo, vi posto il codice(si tratta di codice C)
Codice PHP:
void f2(void) {
char *a, *b, *c;
a = "ciao";
if (!(b = malloc(sizeof(char) * 10))) {
return;
}
strcpy(b, "prova1");
c = b;
b = a;
a = c;
c = NULL;
printf("a = '%s'\nb = '%s'\n", a, b);
free(b);
}
So per certo che l'errore avviene nel free(b) a causa dello scambio fra a e b, quello che non capisco è perché? mi limito a scambiare le stringhe a cui puntano, nel momento in cui vado a liberare la memoria puntata da b per quale motivo dovrebbe dare errore?