ошибка сегментации при назначении элементов структуры в c - PullRequest
0 голосов
/ 20 декабря 2009

У меня две структуры в с

struct data{
  char *name;
};

struct lst{
   struct lst *next;
   struct table *data;
};

когда я пытаюсь присвоить имя типа

l-> data-> name = d-> name; Е ( "% s", l-> данных-> имя);

это дает ошибку сегментации. Так это потому, что память только для чтения или вызвано другой причиной?

хорошо, я решил проблему :) Я сделал:

l-> data = d; имя уже есть :) спасибо всем

Ответы [ 3 ]

6 голосов
/ 20 декабря 2009

Непосредственно перед выполнением этой инструкции, вызывающей нарушение сегментации, введите:

printf( "%p\n", l);
printf( "%p\n", l->data);
printf( "%p\n", d);
printf( "%p\n", d->name);

и посмотрите, какой из них имеет значение NULL (или недопустимое значение).

Ваше нарушение сегментации почти наверняка вызвано неинициализированным указателем.

0 голосов
/ 20 декабря 2009

l->data скорее всего NULL

0 голосов
/ 20 декабря 2009

Меня может вызвать участник, указывающий на недопустимую зону.

...