【发布时间】:2017-04-06 13:52:31
【问题描述】:
struct node *tempNode = (struct node*) malloc(sizeof(struct node));
//and
struct node *tempNode = malloc(sizeof(struct node));
【问题讨论】:
-
(struct node*)在 malloc 返回 void 指针时消除编译器错误。 -
@Ultimater 在 C 中不会有任何警告。见stackoverflow.com/questions/605845/…
-
第一个在C中被认为是不好的做法;自 C90 标准以来,您不需要显式转换
malloc的返回值,并且根据该标准,这样做可能会抑制有用的诊断。还有一个更好的写法是struct node *tempNode = malloc( sizeof *tempNode );。 -
这里的问题标题应该重新表述为Do I cast the result of malloc,不是吗?但很明显它是重复的,我认为应该这样关闭。
标签: c struct malloc sizeof dynamic-memory-allocation