Salut,
je me demandais quelle pouvait être la meilleure approche lorsque l’on initialise des [mono]char*[/mono].
J’ai une structure qui contient des [mono]int[/mono], [mono]double[/mono] et [mono]char*[/mono].
Lorsque j’ai besoin de cette structure, j’utilise un pointeur vers ce type de structure auquel la mémoire nécessaire est allouée. Les variables sont initialisées à 0 (int), 0. (double) et NULL (char*).
Question:
Quelle est la meilleure manière d’initialiser un [mono]char*[/mono]? Sachant que l’utilisateur n’est pas obligé de remplir toutes les chaînes (beaucoup resteront vides).
/* Exemple de constructeur. */
ma_struct* ma_var;
ma_var = malloc(sizeof(ma_struct));
ma_var->chaine1 = NULL;
/* OU BIEN */
ma_var->chaine2 = malloc(sizeof(char));
strcpy(s2,"");/* Qui va écrire '\0' dans s2. */
Pour l’instant, j’utilise la manière 1 et je fais attention à ce que mes chaînes soient bien remplies à un moment (au moins avec ‘\0’) sinon les free(s1) me sortiront un seg fault.
D’où l’idée de faire l’allocation dans le constructeur comme pour s2.
Vos avis?