在C语言中动态分配/释放结构体指针的数组

3

假设我有以下两个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);
}

你明白我的意思吗?


sizeof 需要一个类型名称或所需类型的表达式。你的 malloc(sizeof( *Yoyo)) 应该改为 malloc(sizeof(struct Yoyo))malloc(sizeof(*y)),而 sizeof(*Child) 应该改为 sizeof(struct Child)... - Dmitri
1
@Dmitri sizeof(struct Child*) - BLUEPIXY
2个回答

2
抱歉,我无法直接处理HTML标签。请提供纯文本版本的内容以便翻译。
y->Kids = malloc(n*sizeof(*Child)); and <br>
free(y->Kids); 

因为您的y中包含了子结构。除此之外,您做得很好。


0

y = malloc(sizeof(struct Yoyo));

y->Kids = malloc(n*sizeof(struct Child));

这段代码与编程有关。


我认为 struct child * - BLUEPIXY
那不是会为指针分配内存,并占用4个字节吗? - johnslay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接