2009-12-20 163 views
0

分配结构成员我在C两个结构分段故障而在C

struct data{ 
    char *name; 
}; 

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

当我试图分配一个名称等

1->数据 - >名= D->名; printf(“%s”,l-> data-> name);

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

确定我解决了这个问题:) 我做:

1->数据= d; d具有名称已经:)感谢所有

+2

发布初始化l的代码。并且不要使用l作为变量名称。 – 2009-12-20 12:09:50

+1

部分代码丢失。你是如何分配内存的? – Pierre 2009-12-20 12:10:43

+3

这是我还是我?不是一个好的名字选择 – 2009-12-20 12:14:03

回答

6

你这样做分割违章,造成指令,只插入前:

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

,看看哪一个被设置为NULL(或无效的值)。

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

+0

+1,你也忘记打印:) :) – Patrick 2009-12-20 12:12:25

+1

或者只是使用调试器:)'printf()'调试..我们是在70年代吗? :D – 2009-12-20 12:14:34

+1

@Andreas - 为什么用火箭发射器杀死一只蟑螂? – 2009-12-20 12:18:01

0

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

0

l->data很可能是NULL