说我在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);
}

那有意义吗?

最佳答案

你不需要这些线

y->Kids = malloc(n*sizeof(*Child)); and <br>
free(y->Kids);

因为您的y中包含孩子结构。除了这些,你一切都很好

08-18 07:03