本文介绍了分段故障而在C分配结构成员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在C两个结构

struct data{
  char *name;
};

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

当我试图像分配

1->数据 - >名称= D->名称;
的printf(%S,1->数据 - >名);

l->data->name = d->name;printf("%s",l->data->name);

它给分段错误。因此,它是因为只读存储器或由其他原因引起的?

it gives segmentation fault. So is it because read-only memory or caused by another reason ?

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

ok I solved the problem : )I've done :

1->数据= D;
D的名字已经:)感谢所有

l->data = d;d has the name already :) thanks all

推荐答案

在做细分违章,造成指令,只插入前:

Just before you do that segmentation-violation-causing instruction, insert:

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

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

and see which one is set to NULL (or an invalid value).

您段违规几乎可以肯定是由未初始化的指针导致的。

Your segmentation violation is almost certainly caused by an uninitialized pointer.

这篇关于分段故障而在C分配结构成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-21 19:29