【发布时间】:2017-05-07 13:26:48
【问题描述】:
例如我有这样的结构:
typedef struct{
char *var = (char*)malloc(20*sizeof(char));
} EXAMPLE;
EXAMPLE *point = (EXAMPLE*)malloc(sizeof(EXAMPLE));
我的第一个问题是,结构内部分配的内存是否只会在我为EXAMPLE指针分配内存时分配?
我的第二个问题,当我使用free(point) 时,分配给var 的内存也会被释放吗?
【问题讨论】:
-
这不是有效的 C 代码。
-
我不知道为什么,但是当我提交问题时,它会删除星号
-
你真的检查过这段代码是否可以编译吗?如果我错了,有人纠正我,但我认为你不能在结构定义中调用
malloc(),如果可以的话,这肯定是不好的做法。相反,您应该在结构中纯粹定义您想要的内容,然后在函数中为它定义malloc()空间。 -
附带说明,您不需要(也可能不应该)转换
malloc的返回值。解释见这里:Do I cast the result of malloc? -
@DanielPorteous: 如果可能的话,在这里调用
malloc将类似于在 OO 语言的构造函数中发生的事情,实际上是合理的做法——但整个事情看起来像是一个奇怪的幻想如果它是 C!