gpt4 book ai didi

c - 如何在c中的函数中为结构指针分配内存

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:35 25 4
gpt4 key购买 nike

我正在尝试使用函数为结构指针分配内存,但程序在到达执行此操作的代码行时进入无响应状态。我什么都试过了,但我自己弄不明白。我是 C 的新手。这是代码:

#include <stdio.h>
#include <stdlib.h>

struct elem
{
struct elem *node;
int a;
};


void aloc(struct elem **p,int a)
{
*p=(struct elem*)malloc(sizeof(struct elem));
(*p)->a=a;
(*p)->node=NULL;
}
int main()
{
typedef struct elem E;
E *p;
aloc(p,5);
printf("%d",p->a);


return 0;
}

最佳答案

aloc(p,5); 需要传递结构体指针的地址。您传递结构指针本身。

解决方案aloc(&p,5)


几点:检查malloc的返回值。万一失败,您将不会遇到错误。 (如果您尝试访问它返回 NULL - 这将是未定义的行为)。

并且您正在转换 malloc - 不要这样做。这会导致很多问题。

还可以在完成使用后释放动态分配的对象。

同时尝试阅读编译器提供的警告。它有助于。 (在启用所有警告的情况下编译程序)

关于c - 如何在c中的函数中为结构指针分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47608210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com