我正在尝试使用一个函数来为结构指针分配内存,但是当程序到达执行该操作的代码行时,程序会以无响应的姿态进入。我尝试了一切,但我无法弄清楚自己。我是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;
}
答案 0 :(得分:2)
aloc(p,5);
您需要传递结构指针的地址。你传递结构指针本身。
<强>解决方案强>
aloc(&p,5)
几点:执行检查malloc
的返回值。如果它失败了你就不会遇到错误。 (如果你尝试访问它会返回NULL - 它将是Undefined行为)。
你正在施放malloc
- 不要这样做。这会导致许多问题。
使用完毕后,还可以自由动态分配。
还尝试阅读编译器提供的警告。它有助于。 (在启用所有警告的情况下编译程序)