说我在C中有以下两个结构定义。
struct child {
int x;
};
struct Yoyo {
struct child **Kids;
};
我如何为孩子们分配内存。
比方说,我有一些功能Yoyo_create()。
static struct Yoyo * yoyo_create() {
int n = 32000;
struct Yoyo *y;
y = malloc(sizeof( *Yoyo));
y->Kids = malloc(n*sizeof(*Child));
for (i = 0 ; i < n ; i ++) { y->Kids[i] = NULL; }
}
然后在一些“析构函数”中摧毁孩子们,我会这样做。
void yoyo_destroy(struct yoyo *y)
{
free(y->Kids);
free(y);
}
这有意义吗?
答案 0 :(得分:2)
你不需要这些行
y->Kids = malloc(n*sizeof(*Child)); and <br>
free(y->Kids);
因为你的y包含了儿童结构。除了这些,你进展顺利
答案 1 :(得分:0)
y = malloc(sizeof(struct Yoyo));
y-&gt; Kids = malloc(n * sizeof(struct Child));