假设我有以下两个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)
... - Dmitrisizeof(struct Child*)
- BLUEPIXY