我正在尝试使用函数为结构指针分配内存,但程序在到达执行此操作的代码行时进入无响应状态。我什么都试过了,但我自己弄不明白。我是 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/