在c中分配结构成员时的分段错误
我在c中有两个结构
struct data{ char *name; }; struct lst{ struct lst *next; struct table *data; };
当我试图指定一个名字时
l-> data-> name = d-> name; 的printf( “%S”,1->数据 – >名);
它给出了分段错误。 那是因为只读内存还是由其他原因造成的?
好吧我解决了问题:)我做了:
l-> data = d; d已经有了这个名字:)谢谢大家
在您执行导致分段违规的指令之前,插入:
printf( "%p\n", l); printf( "%p\n", l->data); printf( "%p\n", d); printf( "%p\n", d->name);
并查看哪一个设置为NULL(或无效值)。
您的分段违规几乎肯定是由未初始化的指针引起的。
我可以由指向无效区域的成员引起。
l->data
很可能是NULL