【发布时间】:2011-01-11 19:36:45
【问题描述】:
我向question earlier 询问了关于使用 malloc 定义结构的问题。 这是大多数人给我的答案:
struct retValue* st = malloc(sizeof(*st));
我正在向一位朋友展示我的代码,但我们遇到了一个绊脚石。
有人可以解释为什么这段代码有效吗?
从我的角度来看, *st 在你 malloc 时没有被定义,所以那里可能有任何类型的垃圾。应该是malloc(sizeof(struct retValue))
感谢您的帮助
【问题讨论】:
-
您回答了自己的问题。 sizeof(struct retValue) 是正确的
-
抱歉,问题不是“这是正确的,还是正确的?”它是“为什么这行得通?”
-
如果您更改术语可能有助于理解。您不是使用 malloc 定义结构,而是使用 malloc 分配结构。您正在定义
st,它是一个指针(不是结构)。该指针已经定义并且可用于初始化表达式(在等号的 RHS 上),它只是没有值,因此大多数使用都是无效的。不过这个没关系,因为 sizeof 不使用该值。