gpt4 book ai didi

c - 为什么这个 C 程序会遇到运行时错误?

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:24 27 4
gpt4 key购买 nike

为什么在下面的程序中分配xy 时会出现运行时错误?我如何重写 allocate_nodemain 来防止它?

typedef struct  
{
int x;
int y;
} Foo;

void allocate_node (Foo * f)
{
f = (Foo *) malloc ( sizeof(Foo) );
}
int main ()
{
Foo * p;
allocate_node(p);
p->x = 2;
p->y = 3;
free(p);
}

最佳答案

allocate_node 按值 获取参数。相反,尝试

void allocate_node (Foo ** f)
{
*f = (Foo *) malloc ( sizeof(Foo) );
}

Foo * p;
allocate_node(&p);

或者只是

Foo * p = (Foo *) malloc ( sizeof(Foo) );
p->x = 2;
p->y = 3;
free(p);

关于c - 为什么这个 C 程序会遇到运行时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26762824/

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