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

发布于 2024-08-15 10:06:24 字数 338 浏览 2 评论 0原文

的名称时,我在 c 中有两个结构

struct data{
  char *name;
};

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

当我尝试分配像

l->data->name = d->name; 这样 printf("%s",l->数据->名称);

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

好的,我解决了问题:) 我已经完成了:

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

I have two structure in c

struct data{
  char *name;
};

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

when I'm trying to assign a name like

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 :

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

岁月流歌 2024-08-22 10:06:24

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

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

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

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

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);

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

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

萌吟 2024-08-22 10:06:24

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

I can be caused by a member pointing into an invalid zone.

诺曦 2024-08-22 10:06:24

l->data 很可能为 NULL

l->data is most likely NULL

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文