gpt4 book ai didi

c - 为什么此 C 结构初始化代码会产生总线错误?

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

<分区>

在用 C 语言设计游戏实体系统时,我尝试了一种“无等式”初始化方法。我很惊讶地看到 linter 告诉我在我的 init 函数末尾存在内存泄漏,并且我的变量 ent 从未在以下代码中初始化。结果证明是正确的,因为我遇到了“总线错误”:

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

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

void entity_init(entity_t* ent, int _x, int _y)
{
ent = malloc(sizeof(*ent));
ent->x = _x;
ent->y = _y;
}

int main(void)
{
entity_t* ent;
entity_init(ent, 10, 24);
printf("Entity: x%d y%d", ent->x, ent->y);
return 0;
}

认为上面的代码会做的,是将我的空ent指针作为参数,告诉它指向一些新分配的内存,然后填充在那个内存里,一切都会好起来的。我不知道导致“总线错误”的真正原因是什么,我是否遗漏了一些关于指针和 malloc 的关键信息?

模糊地记得在一些 C 代码中看到过与此非常相似的东西(无等式结构初始化),我强烈希望使用与此类似的无等式初始化样式(损坏) 代码如果这样的事情在 C 中是可能的。

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