J'essaie d'allouer un tableau de char * 's dans C. Je connais le nombre de colonnes à l'avance, mais pas les lignes et je veux allouer le rangées au fur et à mesure des besoins.C allocation dynamique pour une grille lorsque les lignes ne sont pas connues
J'ai essayé d'utiliser:
char *(*data)[NUMCOLS]; //declare data as pointer to array NUMCOLS of pointer to char
data = malloc(sizeof(char*));
maintenant, la ligne ci-dessus devrait allouer des données [0] ... correctes? , je dois être en mesure d'utiliser la ligne comme
data[0][1] = strdup("test");
.
..
data[0][NUMCOLS-1] = strdup("temp");
Je reçois faute de SEG. Je ne suis pas capable de comprendre ce qui ne va pas ici. quelqu'un peut-il s'il vous plaît aider.
'data = malloc (NUMROWS * sizeof * data);' est une autre option. – caf
@caf Tout d'abord, vous obtiendrez une erreur, puisque vous n'avez pas spécifié de type de données pour sizeof. Deuxièmement, quand j'ai dit NUMCOLS, c'était aussi la longueur de cette chaîne particulière. Deuxièmement: dans le contexte de la question de l'OP, "data" est un pointeur donc si les données étaient déjà allouées et que votre code était compilé, il manquerait de mémoire pour l'allouer. – aviraldg
Cette approche est avec des données char ***? ou char * (* data) [] – vyom