gpt4 book ai didi

c - 关于代码片段中分配内存的差异的问题?

转载 作者:行者123 更新时间:2023-11-30 20:43:17 24 4
gpt4 key购买 nike

任何人都可以解释为什么这里为结构分配内存不同的区别吗?谢谢。

typedef struct Node{
int data;
struct Node *next;
}Node;

Node *newNodePtr = (Node*)malloc(sizeof(Node));

对比

struct Person {
char *name;
int age;
int height;
int weight;
};

struct Person *who = malloc(sizeof(struct Person));

最佳答案

struct Node 是 Node 的 typedef,因此 sizeof(Node) 是合法的,因为 Person 没有 typedef,所以你不能执行 sizeof(Person)。 malloc 上对 (Node*) 的强制转换是不必要的,C 允许从 void * 强制转换为其他对象类型指针而无需强制转换(很多人建议不要这样做)。

关于c - 关于代码片段中分配内存的差异的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52806584/

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