Ciao a tutti.
Una domanda che probabilmente risulterà più che banale a chi utilizza costantemente il C.

Il seguente pezzo di codice mi fa terminare il programma con un Segmentation Fault e non capisco perchè (è incriminata l'istruzione in grassetto). Sottolineo che sto sviluppando sotto Linux:
codice:
...
char **vett;   /* dichiaro un vettore di stringhe */
...

if ((vett = (char **) malloc(12 * sizeof(char*))) == NULL) {
   exit(5);
}
for(i=0; i<12; i++) {
   if ((vett[i] = (char *) malloc(4 * sizeof(char))) == NULL) {
      exit(6);
   }
   vett[i] = "\0\0\0";
}

strcpy(vett[0], "gen");
...
Qualcuno mi sa spiegare perchè se utilizzo, invece, questa istruzione tutto funziona correttamente?
codice:
vett[i] = "gen";
Ciao e grazie.