为什么我会出现段错误?我想将 char 数组指针放入结构中

发布于 2024-12-07 08:24:16 字数 422 浏览 1 评论 0原文

考虑以下代码:

typedef struct port * pport;

struct port
{
  int a;
  int b;
  pport next;
  pport prev;
  char * port;
};

void addNewport(pport head)
{
  pport newPort = (pport)malloc(sizeof(pport*));
  newPort->prev=temp;
  head->next=newPort;
}

int main()
{
  pport head = (pport)malloc(sizeof(pport*));
  addNewport(head);
}

如果尝试通过子例程添加新端口,这将导致段错误,但如果我在主程序中执行它,则不会出现段错误。这是为什么?

consider the fallowing code:

typedef struct port * pport;

struct port
{
  int a;
  int b;
  pport next;
  pport prev;
  char * port;
};

void addNewport(pport head)
{
  pport newPort = (pport)malloc(sizeof(pport*));
  newPort->prev=temp;
  head->next=newPort;
}

int main()
{
  pport head = (pport)malloc(sizeof(pport*));
  addNewport(head);
}

This will result in seg fault if try to add a new port via a subroutine, but if I perform it the main, no seg fault will appear. Why is that?

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

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

发布评论

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

评论(1

权谋诡计 2024-12-14 08:24:16

替换

 malloc(sizeof(pport*))

为,

 malloc(sizeof(struct port))

因为您不想为指针分配内存,而是为结构分配内存。

Replace

 malloc(sizeof(pport*))

with

 malloc(sizeof(struct port))

because you don't want to allocate memory for a pointer, rather for the struct.

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