Il y a pas mal de sujets sur ce sujet mais je n'ai pas été capable de trouver une solution qui a fonctionné pour moi; Je reçois une erreur de segmentation chaque fois que j'essaie de changer le nom de student_t.member->. Ci-dessous la structure typedef que je suis obligé d'utiliser:Programmation en C: Modification de la valeur de membre de struct donne segfault
typedef struct degree_t degree_t;
typedef struct student_t student_t;
struct degree_t {
student_t* member;
int course_id;
}
struct student_t {
char* name;
int age;
}
int main(int argc, char* argv[]) {
student_t *students = malloc(sizeof(student_t) * 3);
degree_t *degrees = malloc(sizeof(degree_t));
for (int i=0; i<3; i++) {
degrees[i].course_id = 1;
degrees[i].member->name = "Bob";
}
return 0;
}
je peux changer degrés [i] .course_id parfaitement bien, mais chaque fois que j'essaie de changer degrés [i] .member -> nom, je reçois un erreur de segmentation. GDB indique qu'il s'agit d'un résultat de la ligne degrés [i] .member-> name = "Bob", mais je ne comprends pas pourquoi, et je ne sais pas comment modifier efficacement la valeur de degrés [i] .member-> name
Assurez-vous d'allouer de la mémoire pour * tous * pointeurs, y compris ceux à l'intérieur de vos 'struct's. Question bien écrite par la manière, plus un. – Bathsheba
Merci! J'espérais que ce ne serait pas trop un cauchemar à lire. Mais je suis légèrement confus avec l'allocation - quels pointeurs ont manqué sur allocation de mémoire pour? –