在c中分配结构成员时的分段错误

时间:2009-12-20 12:07:47

标签: c segmentation-fault

我在c

中有两个结构
struct data{
  char *name;
};

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

当我尝试分配名称

l-> data-> name = d-> name; 的printf( “%S”,1→DATA->名称);

它给出了分段错误。那是因为只读内存还是由其他原因造成的?

好的我解决了这个问题:) 我做完了:

l-> data = d; d已经有了名字:)谢谢所有

3 个答案:

答案 0 :(得分:6)

在您执行导致分段违规的指令之前,请插入:

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

并查看哪一个设置为NULL(或无效值)。

您的分段违规几乎肯定是由未初始化的指针引起的。

答案 1 :(得分:0)

我可能是由指向无效区域的成员引起的。

答案 2 :(得分:0)

l->data很可能是NULL